Tôi đang cố gắng lọc một loạt các đối tượng thông qua mối quan hệ nhiều-nhiều. Vì trigger_roles
trường có thể chứa nhiều mục nhập nên tôi đã thử contains
bộ lọc. Nhưng vì nó được thiết kế để sử dụng với các chuỗi, tôi khá bất lực về cách lọc mối quan hệ này (bạn có thể bỏ qua values_list()
atm.).
Chức năng này được đính kèm với hồ sơ người dùng:
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)
Mô hình quy trình làm việc của tôi trông như sau (đơn giản hóa):
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)
Mặc dù giải pháp có thể khá đơn giản, nhưng bộ não của tôi sẽ không cho tôi biết.
Cảm ơn bạn đã giúp đỡ.