다 대다 관계를 통해 여러 개체를 필터링하려고합니다. 때문에 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)
해결책은 조용하지만 간단 할 수 있지만 내 뇌는 말하지 않습니다.
당신의 도움을 주셔서 감사합니다.