我有几个非常个性化的Django ModelAdmins,我想补充额外的字段(一个或多个),如果用户是超级用户。 我发现的地方,有人说重写get_fieldsets方法是这样
def get_fieldsets(self, request, obj=None):
fieldsets = super(PageAdmin, self).get_fieldsets(request, obj)
if request.user.is_superuser:
fieldsets[0][1]['fields'].insert(0,'group')
fieldsets[0][1]['fields'].insert(2,'is_live')
else:
groups = request.user.page_groups.filter(
is_live = True,
)
if groups.count() > 1:
fieldsets[0][1]['fields'].insert(0,'group')
return fieldsets
这工作(那种),我喜欢使用get_fieldsets,因为它让我组的字段到字段集。 我也用get_form这个管理员,因为形式有具有基于用户的查询集多个用户特定的表单字段。
def get_form(self, request, obj=None, **kwargs):
if request.user.is_superuser:
return PageForm
else:
form = RestrictedPageForm
form.owner = request.user #(this may be a bad way to do this but it works I think)
return form
现在我遇到了我认为是线程的问题。
什么情况是,如果你快速刷新change_form页面在浏览器中,您将看到多个“集团”或形式“is_live”领域。
我真的很喜欢利用管理员让我不必写的一切,但我不能找出如何正确地做到这一点。 任何帮助或建议将不胜感激!