我在这里查看了几个看起来相似的问题,但没有一个从管理面板的角度讨论这个问题。
我需要检查用户是否有权将字段留空。我想使用 request.user 但我不知道如何将请求从 EntryAdmin 传递到 ModelForm。我想做这样的事情:
class EntryAdminForm(ModelForm):
class Meta:
model = Entry
def clean_category(self):
if not self.request.user.has_perm('blog.can_leave_empty_category') and not bool(self.category):
raise ValidationError(u'You need to choose a Category!')
else:
return self.cleaned_data['category']
最佳答案
您可以覆盖 ModelAdmin.get_form
,通过将请求添加为新创建的表单类的属性(应该是线程安全的)。
沿着这些路线的东西:
class EntryAdmin(admin.ModelAdmin):
form = EntryAdminForm
def get_form(self, request, *args, **kwargs):
form = super(EntryAdmin, self).get_form(request, *args, **kwargs)
form.request = request
return form
那么你问题中的代码应该可以工作。
关于django - 如何根据 django 管理面板中的登录用户清理表单数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2627565/