Django Model Form

文章讲述了在Django中如何通过设置`render_value=True`来保留密码输入,以及如何使用`attrs`属性修改表单字段的属性,如禁用(disabled)、类样式(class)和占位符(placeholder)。同时,文中指出了修改字段属性时的注意事项,包括属性添加方式的区别和避免覆盖原有属性的方法。
摘要由CSDN通过智能技术生成

密码框不清除

        render_value=True,实现密码错误也不清除,保留上一次输入

        示例

                forms.CharField(label="密码", widget=forms.PasswordInput(render_value=True))

可以进行选择choice

        identity_choice = (

                (0, '运动员'),

                 (1, '裁判员'),

                 (2, '检录员'),

                 (3, '赛事策划员'),

                 (4, '广播管理员'),

                 (5, '管理员'),

         )

         identity = models.SmallIntegerField(verbose_name='身份', choices=identity_choice, default=0)

        对于需要显示其后面的名字,get_identity_display()

form自行添加指定字段的数据

        form里面需要先配置instance这个示例,否则数据库不知道需要更新哪一条数据

        form.instance.所要修改的字段名 = 修改的值

 

获取数据库字段自己生成的id

        self.instance.pk

修改指定字段的属性

        第一种方式:

                self.fields.widget.attrs['属性名'] = ‘属性值’

# 把 school_depart 这个字段的disabled属性设置为disabled
# 实现的效果是该字段不能编辑,只读类型

self.fields['school_depart'].widget.attrs['disabled'] = 'disabled'

        第二种方式

                self.fields.widget.attrs = {'属性值':'属性值',}

                以此类推在字典中可以添加多个属性

# 设置该字段类样式和显示地保留名称

field.widget.attrs = {"class": "form-control", "placeholder": field.label}

        注意两者的区别

                第一种方式会属于在原有的属性上添加一个新的属性,不改变原来的属性

                第二种方式属于覆盖,会把原来的属性给覆盖掉

        

        错误写法

        此写法 由于后面使用了attrs = ,所以上面的值给覆盖掉了,相当于没有作用,白写

# 不能修改值的效果
self.fields['school_depart'].widget.attrs['disabled'] = 'disabled'

for name, field in self.fields.items():
    field.widget.attrs = {"class": "form-control", "placeholder": field.label}
            

       

        能实现效果的写法 

        在该字段原有的属性下添加新的属性

# 这能实现修改值的效果
for name, field in self.fields.items():
    field.widget.attrs = {"class": "form-control", "placeholder": field.label}
            
self.fields['school_depart'].widget.attrs['disabled'] = 'disabled'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值