这里写自定义目录标题
Django中Form的input字段改成Textarea字段
项目是原先qt开发的维修登记程序改为BS模式,(qt程序可以参考原先的教程),采用的python+django form表单默认的是input,部分字段需要修改为Textarea,才能填入更多内容。
class WeixiuModelForm(forms.ModelForm):
# 方式一
# mobile = forms.CharField(min_length=11)#长度最小为3
# 在models.py中,已经设置mobile长度最大为11,此处又设置长度最小为11 此时输入必须是11位。
# 方式二
sid = forms.CharField(
label="订单编号",
validators=[RegexValidator(r'^2[0-9]\d{9}$', '订单编号格式错误')]
)
weixiuqingkuang = forms.CharField(widget=forms.Textarea,label="维修情况",)
beizhu = forms.CharField(widget=forms.Textarea,label="备注",) # 指定字段
class Meta:
model = models.Weixiu
# fields = ["mobile","price","level","status"]
fields = "__all__"
# exclude = ['mobile']#排除某一个字段
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 循环找到所有插件,添加class
for name, field in self.fields.items():
if name == "songtime":
field.widget.attrs = {"class": "form-control", "placeholder": "2023-11-11"}
print("刘龙龙")
continue
if name == "beizhu":
field.widget.attrs = {"class": "form-control", "placeholder": "备注信息"}
#<textarea class="form-control" rows="3"></textarea>
continue
# field.widget.attrs = {"class": "form-control", "placeholder": "2011-11-11"}
field.widget.attrs = {"class": "form-control", "placeholder": field.label}
# 方法三 验证数据是否为正常 钩子的方法
# 可以添加正则表达式 或者数据是否重复了
def clean_mobile(self):
txt_mobile = self.cleaned_data["sid"]
# 排除某一个id
# print(self.instance.pk)
# exists = models.PrettyNum.objects.filter(mobile=txt_mobile).exclude(id=2).exists()
exists = models.Weixiu.objects.filter(sid=txt_mobile).exists() # 判断是否存在 返回True 或False
# 验证不通过
# if len(txt_mobile)!= 11:
# raise ValidationError("格式错误")
if exists:
raise ValidationError("订单已经存在了")
return txt_mobile # 通过之后返回用户输入的值
def weixiu_add(request):
if request.method == "GET":
form = WeixiuModelForm()
return render(request, 'weixiu_add.html', {"form": form})
form = WeixiuModelForm(data=request.POST)
if form.is_valid():
# 如果数据合法
# print(form.cleaned_data)
# {'name': '刘龙龙', 'password': 'd', 'age': 12, 'account': Decimal('0'), 'creat_time': datetime.datetime(2011, 11, 11, 0, 0, tzinfo=zoneinfo.ZoneInfo(key='UTC')), 'depart': <Department: 信息部3231213>, 'gender': 1}
form.save()
return redirect('/weixiu/list')
else: # 校验失败
# print(form.errors)
return render(request, 'weixiu_add.html', {"form": form})
核心的是,weixiuqingkuang 为数据库需要的对应的字段
```python
weixiuqingkuang = forms.CharField(widget=forms.Textarea,label="维修情况",)
beizhu = forms.CharField(widget=forms.Textarea,label="备注",) # 指定字段
[源码地址](https://gitee.com/liu374765270/python/tree/master/djangoProject/d16)