django - 按用户组过滤 Django 管理站点
问题描述
我想使用 Django 用户组过滤管理站点上显示的对象。每个用户被分配到一个或多个代表不同类别文章的用户组。每篇文章都属于一个或多个类别(用户组和类别的名称相同)。在文章对象的管理站点上,用户只能看到他们所属类别的文章。通过在 ModelAdmin 中覆盖get_queryset并检索包含用户组名的列表,我找到了一种基本方法。但是我如何在ArticleAdmin中引用ArticleCategory模型来与组名进行比较?
模型.py
class Article(models.Model):
title = models.CharField(max_length=200, default=None)
class Category(models.Model):
name = models.CharField(max_length=50, default=None)
class ArticleCategory(models.Model):
article = models.ForeignKey(Article, on_delete=models.CASCADE, default=None)
category = models.ForeignKey(Category, on_delete=models.CASCADE, default=None)
def __str__ (self):
return(str(self.article) + " " + str(self.category))
def natural_key(self):
return ({'category': self.category})
管理员.py
class ArticleAdmin(admin.ModelAdmin):
model = Article
def get_queryset(self, request):
if request.user.is_superuser:
queryset = Article.objects.all()
else:
try:
l = request.user.groups.values_list('name',flat = True)
l_as_list = list(l)
queryset = Article.objects.filter(??? in l_as_list)
except:
queryset = Article.objects.none()
return queryset
admin.site.register(Article, ArticleAdmin)
以下行不起作用:
queryset = Article.objects.filter(articlecategory__category.name in l_as_list)
解决方案
推荐阅读
- c# - WPF ControlTemplate - 为椭圆触发不同的背景颜色
- python - 逻辑回归 PMML 不会产生概率
- php - PHP 方法范围绑定
- android - ConstraintLayout 在底部工作表视图中无法正常工作
- xslt - 比较 2 个 XML 并进行排序
- excel - 如何使用VBA调整PowerPoint图表中的数据选择范围
- html - 为什么在Ubuntu18.04中html的默认打开方式设置为Visual Studio Code URL Handler
- angular - Angular 组件的 Input() 属性未定义
- javascript - VueJS:将鼠标悬停在段落中的单词上时突出显示整个句子
- c - 将嵌套的 for 循环转换为 C 中的递归