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)
调整完成之后的效果