dom*_*ino 5 django validation django-forms django-admin
我正在尝试执行验证,以便在他是管理员时无法删除用户.因此,如果用户是管理员并且已被标记为删除,我想检查并引发错误.
这是我的内联 ModelForm
class UserGroupsForm(forms.ModelForm):
class Meta:
model = UserGroups
def clean(self):
delete_checked = self.fields['DELETE'].widget.value_from_datadict(
self.data, self.files, self.add_prefix('DELETE'))
if bool(delete_checked):
#if user is admin of group x
raise forms.ValidationError('You cannot delete a user that is the group administrator')
return self.cleaned_data
Run Code Online (Sandbox Code Playgroud)
该if bool(delete_checked):条件返回true,里面的东西if块被执行,但由于某种原因从来没有提出这个验证错误.有人可以向我解释原因吗?
更好的是,如果还有另一种更好的方法,请告诉我
我找到的解决方案是clean在InlineFormSet代替ModelForm
class UserGroupsInlineFormset(forms.models.BaseInlineFormSet):
def clean(self):
delete_checked = False
for form in self.forms:
try:
if form.cleaned_data:
if form.cleaned_data['DELETE']:
delete_checked = True
except AttributeError:
pass
if delete_checked:
raise forms.ValidationError(u'You cannot delete a user that is the group administrator')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2349 次 |
| 最近记录: |