ฉันพยายามกรองวัตถุจำนวนมากผ่านความสัมพันธ์แบบกลุ่มต่อกลุ่ม เนื่องจาก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)
แม้ว่าวิธีแก้ปัญหาอาจจะเรียบง่าย แต่สมองของฉันก็ไม่ได้บอกฉัน
ขอบคุณสำหรับความช่วยเหลือของคุณ.