我希望管理员用户只看到他们创建的模型实例。我遵循了这些指示Filter django admin by logged in user
class FilterUserAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if getattr(obj, 'user', None) is None: #Assign user only the first time, superusers can edit without changing user
obj.user = request.user
obj.save()
def queryset(self, request):
qs = super(FilterUserAdmin, self).queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(user=request.user)
def has_change_permission(self, request, obj=None):
if not obj:
# the changelist itself
print('query change')
return True # So they can see the change list page
return obj.user == request.user or request.user.is_superuser
class CampaignAdmin(FilterUserAdmin):
...
这就是我的代码的样子。 节约是可以的。 但是,其他用户在他们的活动列表中看到了模型活动, 虽然他们无法编辑它。当非所有者的用户单击要编辑的活动时,会看到403个禁止页面。在
我不希望模型实例显示在其他用户的活动列表中。
您应该重写^{} ,而不是{}。在django1.6中,该方法从
queryset
重命名为get_queryset
。在注意,在检查
if getattr(obj, 'user', None) is None:
时不需要使用getattr
,可以将其简化为if obj.user is None
。在相关问题 更多 >
编程相关推荐