其他分享
首页 > 其他分享> > Django ModelForm 中自定义字段显示顺序

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字段没有在一起

 

 

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)

调整完成之后的效果

 

标签:__,last,自定义,move,label,forms,CharField,Django,ModelForm
来源: https://www.cnblogs.com/yehaita/p/14123632.html