我有一个简单的博客应用,其中包含author=models.ForeignKey(User, editable=False)
字段。博客帖子是从django管理站点创建的,我使用save_model来获取作者request.user。
现在我希望用户(is_staff)在浏览模特帖子时只能看到自己的帖子。但默认情况下会显示所有博客帖子,那么如何隐藏其他用户创建的博客帖子?当然超级用户需要看到所有这些。
答案 0 :(得分:3)
覆盖ModelAdmin子类上的get_queryset
方法。 documentation有一个您正在要求的示例:仅显示与当前用户相关的对象。
答案 1 :(得分:1)
如果有人偷懒。这是我使用的示例代码。 因此,首先创建一个QuerySet Manager,我通常在models.py中拥有我的名字,它执行以下操作(在本例中,我将其称为模型Blog):
class BlogManager(models.Manager):
def get_queryset(self, request):
query = Blog.objects.filter(author=request.user)
if request.user.is_superuser:
query = UserProfile.objects.all()
return query
确保您的admin.py包含以下内容:
def get_queryset(self, request):
queryset = BlogManager.get_queryset(self, request)
return queryset
所以它看起来像:
class BlogAdmin(admin.ModelAdmin):
#add any other code here
#Using that queryset manager created before
def get_queryset(self, request):
queryset = BlogManager.get_queryset(self, request)
return queryset
admin.site.register(BlogAdmin)
希望这对任何人都有帮助!