django管理站点-仅显示由request.user创建的模型对象

django管理站点-仅显示由request.user创建的模型对象,django,django-admin,django-views,Django,Django Admin,Django Views,我有一个简单的博客应用程序,其中author=models.ForeignKeyUser,editable=False字段。博客文章是从django管理站点创建的,我使用它来获取作者request.user 现在我想让用户在浏览模型帖子时只能看到自己的帖子。但是默认情况下会显示所有博客文章,那么我如何隐藏其他用户创建的博客文章呢?当然,超级用户需要看到所有这些 重写ModelAdmin子类上的get_queryset方法。有一个例子正好说明了您的要求:仅显示与当前用户相关的对象。覆盖ModelA

我有一个简单的博客应用程序,其中author=models.ForeignKeyUser,editable=False字段。博客文章是从django管理站点创建的,我使用它来获取作者request.user


现在我想让用户在浏览模型帖子时只能看到自己的帖子。但是默认情况下会显示所有博客文章,那么我如何隐藏其他用户创建的博客文章呢?当然,超级用户需要看到所有这些

重写ModelAdmin子类上的get_queryset方法。有一个例子正好说明了您的要求:仅显示与当前用户相关的对象。

覆盖ModelAdmin子类上的get\u queryset方法。有一个例子正好说明了您的要求:仅显示与当前用户相关的对象。

以防任何人懒惰。下面是我使用的示例代码。 因此,首先创建一个QuerySet管理器,我通常在models.py中有我的管理器,在本例中,我将其称为model 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)

希望这对任何人都有帮助

以防有人偷懒。下面是我使用的示例代码。 因此,首先创建一个QuerySet管理器,我通常在models.py中有我的管理器,在本例中,我将其称为model 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)

希望这对任何人都有帮助

如果在模型no FK to user中定义了相关用户,那么有没有办法通过日志条目或其他方式实现相同的功能?答案中的链接已经损坏了。这是Django 3.1的更新链接。如果在模型no FK to user中定义了相关用户,有没有办法通过日志条目或其他方式实现相同的功能?答案中的链接已损坏。这里是Django 3.1的更新链接。