我试图只显示与当前用户相关的对象。用户可以上传文件,然后他们只能在管理员中看到他们的文件。这是我的模特:
class Share(models.Model):
owner = models.ForeignKey(User, default='')
title = models.CharField("File's title", max_length=100, unique=True, default='File')
zip_file = models.FileField('Shared File', upload_to=content_zip_name, validators= [validation_zip])
和我的admin.py
from django.contrib import admin
from share.models import Share
class ShareAdmin(admin.ModelAdmin):
list_display = ('title',)
save_as = True
def queryset(self, request):
qs = super(ShareAdmin, self).queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(owner=request.user)
admin.site.register(Share, ShareAdmin)
我尝试覆盖查询集功能但是没有工作......任何想法?
答案 0 :(得分:1)
您已将queryset
方法(与list_filter
一起使用)与get_queryset
方法混淆:
get_queryset
上的ModelAdmin
方法会返回所有 QuerySet 可以由管理站点编辑的模型实例。一个用例 重写此方法是显示已登录所拥有的对象 用户。
[强调我的]
class ShareAdmin(admin.ModelAdmin):
list_display = ('title',)
save_as = True
def get_queryset(self, request):
qs = super(ShareAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(owner=request.user)