gpt4 book ai didi

django - 在django-admin内联表单上验证删除

转载 作者:行者123 更新时间:2023-12-04 18:15:30 26 4
gpt4 key购买 nike

我正在尝试执行验证,以便如果用户是管理员,则无法删除该用户。因此,如果有一个用户是管理员并且已被标记为删除,我想检查并引发一个错误。

这是我的内联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
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')

关于django - 在django-admin内联表单上验证删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4304406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com