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