Djangoフィルター多対多を含む
多対多の関係で多数のオブジェクトをフィルタリングしようとしています。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) …