首页 > 解决方案 > django admin 在使用单独的表单进行添加和更新时不断提高验证错误

问题描述

我有两种形式:一种用于添加,另一种用于更新

class UserAddForm(forms.ModelForm):
    class Meta:
        model = User
        fields = []
    email = forms.CharField()
    first_name = forms.CharField()
    last_name = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput(render_value=False), required=True, label='Mot de passe')
    is_teacher = forms.TypedChoiceField(coerce=lambda x: x == 'True', choices=((True, 'OUI'), (False, 'NON')), widget=forms.RadioSelect, label='Enseignant ?')


class UserChangeForm(forms.ModelForm):
    class Meta:
        model = User
        fields = []
    email = forms.CharField()
    first_name = forms.CharField()
    last_name = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput(render_value=False), required=False, label='Mot de passe')
    is_teacher = forms.TypedChoiceField(coerce=lambda x: x == 'True', choices=((True, 'OUI'), (False, 'NON')), widget=forms.RadioSelect, label='Enseignant ?')

这是ModelAdmin

class UserAdmin(UserUploadAdmin):
    fields = ['email', 'first_name', 'last_name', 'password', 'is_teacher']
    form = UserChangeForm
    
    def get_form(self, request, obj=None, **kwargs):            
        if not obj:
            return UserAddForm
        return super(UserAdmin, self).get_form(request, obj, **kwargs)  

这个想法是处理空密码的情况。如果它是新用户,则需要密码,如果我正在更新,那么它将为空,因此被忽略。

问题是添加表单不断引发验证错误,即使字段不为空

在此处输入图像描述

但是,更新表单可以正常工作,没有任何问题。

标签: pythondjangodjango-formsdjango-admin

解决方案


推荐阅读