[英]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.