首页 > 解决方案 > 文章作者的自定义 Django 管理员权限

问题描述

我正在建立一个包含文章的网站。文章内容将存储在数据库模型中。例子:

class article(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    date_posted = models.DateTimeField(default=timezone.now)
    content = models.TextField()
    ...

我想使用内置的管理应用程序向网站添加新文章。我将有一个名为“作者”的组,它允许其他人登录到管理部分并添加新内容。

我的问题是权限。我想授予“作者”组添加、更改、查看和删除文章的权限。但我想仅限于他们创建的文章。基本上我不希望他们能够更新其他作者的帖子。

有没有办法可以给他们自定义权限,以便他们只能更改、查看和删除自己的帖子?

标签: djangowebdjango-modelspermissionsdjango-admin

解决方案


您可以使用get_queryset

class ArticleModelAdmin(admin.ModelAdmin):

    def get_queryset(self, request):
        qs = super(ArticleModelAdmin, self).get_queryset(request)
        return qs.filter(author=request.user)

不要忘记注册您的 ModelAdmin。

admin.site.register(Article, ArticleModelAdmin)

推荐阅读