Django中Form的input字段改成Textarea字段

这里写自定义目录标题

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_45247650

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值