【发布时间】:2012-02-17 15:27:22
【问题描述】:
我有一个修改后的管理表单,我在其中添加了一个字段,该字段将修改当前模型的父对象的值。现在,根据用户,我需要
- 更改该额外字段的查询集
- 将另一个字段设置为只读(或者更好,甚至完全隐藏)
基本上,我下面的代码可以按我的预期工作。超级用户获取整个查询集,而另一个字段是 not 只读的。所有其他用户都获得有限的查询集,而其他字段 是只读的。但是,一旦我在不同的浏览器中以非超级用户身份打开该站点,即使是超级用户也会得到与非超级用户相同的结果。似乎 django 以某种方式缓存了结果?如果我在条件分支中放置一些打印语句,它们会被正确打印。因此,该方法每次仍会被调用,并且似乎仍在执行这些步骤。只有错误的结果。
这是缓存问题吗?我做错了什么吗?会不会是django测试服务器的bug?
def get_form(self, request, obj=None, **kwargs):
form = super(MultishopProductAdmin, self).get_form(request, obj, **kwargs)
if obj is not None:
form.declared_fields['categories'].initial = obj.product.category.all()
if not request.user.is_superuser:
user_site = request.user.get_profile().site
form.declared_fields['categories'].queryset = Category.objects.filter(site__id=user_site.id)
self.readonly_fields = ('virtual_sites', )
if obj is not None:
form.declared_fields['categories'].initial = obj.product.category.filter(site__id=user_site.id)
return form
【问题讨论】:
标签: django admin customization