繁体   English   中英

显示与当前用户相关的对象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函数,但是不起作用..任何想法吗?

您已经将queryset方法(与list_filter一起使用)与get_queryset方法混淆了:

get_queryset上的一个方法ModelAdmin返回,可以通过管理界面进行编辑所有的模型实例的查询集 重写此方法的一个用例是显示登录用户拥有的对象。

[ 重点矿 ]

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM