Django ModelForm 中自定义字段显示顺序

1.未做处理时,form设置

class user_role_form(ModelForm):
    eid=forms.CharField(label='用户编码',validators=[RegexValidator(r'^(E|H)\d{6}$')])
    password=forms.CharField(label='密码',widget=forms.PasswordInput())
    confirm_pwd=forms.CharField(label='确认密码',widget=forms.PasswordInput())
    class Meta:
        model=models.UserInfo
        fields='__all__'

在前端form中confirm_pwd显示在表单的最后面和password字段没有在一起

Django ModelForm 中自定义字段显示顺序

 

 

2.目前我们想让confirm_pwd和password字段显示在一起,可在__init__魔法方法中调用move_to_end()方法,方法中有个参数为last,last默认为True,如果last为True,则将该字段调到最后,如果last为False,则在最前

class user_role_form(ModelForm):
    eid=forms.CharField(label='用户编码',validators=[RegexValidator(r'^(E|H)\d{6}$')])
    password=forms.CharField(label='密码',widget=forms.PasswordInput())
    confirm_pwd=forms.CharField(label='确认密码',widget=forms.PasswordInput())
    class Meta:
        model=models.UserInfo
        fields='__all__'
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        move_list=['email','roles']   # 需要调整顺序字段的列表
        for item in move_list:
            self.fields.move_to_end(item,last=True)

调整完成之后的效果

Django ModelForm 中自定义字段显示顺序

 

上一篇:Django之ModelForm组件


下一篇:Atlas mysql的读写分离和负载均衡<转>