我想排除CustomUser modelform中的一个字段,该字段应该是BaseInlineFormset的一部分。我尝试了:
class CustomUserForm(forms.ModelForm):
model = CustomUser
class Meta:
exclude = ('send_creation_mail',)
def clean(self):
cleaned_department = self.cleaned_data['department']
cleaned_report_to = self.cleaned_data['report_to']
# count = 0
if cleaned_department is None:
raise forms.ValidationError('Department is mandatory')
if cleaned_report_to is None:
raise forms.ValidationError('Report to is mandatory')
class CustomUserFormSet(BaseInlineFormSet):
model = CustomUser
form = CustomUserForm
def __init__(self, *args, **kwargs):
super(CustomUserFormSet, self).__init__(*args, **kwargs)
for form in self.forms:
form.empty_permitted = False
def clean(self):
# get forms that actually have valid data
count = 0
for form in self.forms:
try:
if form.cleaned_data and not form.cleaned_data.get(
'DELETE', False):
count += 1
if form.cleaned_data.get('department') is None:
raise forms.ValidationError('Department is mandatory')
if form.cleaned_data.get('report_to') is None:
raise forms.ValidationError('Reporting is mandatory')
except AttributeError:
# annoyingly, if a subform is invalid Django explicity raises
# an AttributeError for cleaned_data
pass
if count < 1:
raise forms.ValidationError('At least one detail is mandatory')
class CustomUserInline(admin.TabularInline):
formset = CustomUserFormSet
如果我在CustomUserInline类中使用CustomUserForm,它肯定会排除属性“send_creation_mail”,但在保存用户表单时,它会引发一个异常:
^{pr2}$我想确保在将用户详细信息保存到django管理员身份验证之前至少填写了1个内联表单。使用form=CustomUserForm,在CustomUserFormSet类中没有任何效果,因为CustomUserForm显示模型的所有字段(不包括“send_creation_mail”)。我需要详细的代码来说明哪里出错了?在
您的})。在
.clean()
不返回self.cleaned_data
(它需要返回cleaned_data
或引发{相关问题 更多 >
编程相关推荐