Django filter many-to-many with contains(姜戈过滤多对多包含)
本文介绍了姜戈过滤多对多包含的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试通过多对多关系对一堆对象进行过滤操作。因为trigger_roles字段可能包含多个条目,所以我尝试了contains过滤。但是,由于这是设计用于字符串的,我几乎无能为力,我不知道应该如何过滤这个关系(您可以忽略values_list()ATM机。)。
此函数附加到用户配置文件:
def getVisiblePackages(self):
visiblePackages = {}
for product in self.products.all():
moduleDict = {}
for module in product.module_set.all():
pkgList = []
involvedStatus = module.workflow_set.filter(trigger_roles__contains=self.role.id,allowed=True).values_list('current_state', flat=True)
我的工作流模型如下(简化):
class Workflow(models.Model):
module = models.ForeignKey(Module)
current_state = models.ForeignKey(Status)
next_state = models.ForeignKey(Status)
allowed = models.BooleanField(default=False)
involved_roles = models.ManyToManyField(Role, blank=True, null=True)
trigger_roles = models.ManyToManyField(Role, blank=True, null=True)
尽管解决方案可能非常简单,但我的大脑不会告诉我。
感谢您的帮助。
推荐答案
您是否尝试过这样的操作:
module.workflow_set.filter(trigger_roles__in=[self.role], allowed=True)
或仅当self.role.id不是PKS列表:
module.workflow_set.filter(trigger_roles__id__exact=self.role.id, allowed=True)
这篇关于姜戈过滤多对多包含的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:姜戈过滤多对多包含
基础教程推荐
猜你喜欢
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- 包装空间模型 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 求两个直方图的卷积 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
