【发布时间】:2011-05-29 07:37:42
【问题描述】:
我正在尝试通过多对多关系过滤一堆对象。因为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)
虽然解决方案可能很简单,但我的大脑不会告诉我。
感谢您的帮助。
【问题讨论】:
标签: python django django-models many-to-many django-orm