显示与当前用户相关的对象 django admin

Display objects related current user django admin

我试图只显示与当前用户相关的对象。用户可以上传文件,然后他们只能在管理员中看到他们的文件。这是我的模型:

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)

我尝试覆盖查询集函数但没有用..有什么想法吗?

您混淆了 queryset method (used with list_filter) with the get_queryset 方法:

The get_queryset method on a ModelAdmin returns a QuerySet of all model instances that can be edited by the admin site. One use case for overriding this method is to show objects owned by the logged-in user.

[强调我的]

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)