मैं कई-कई संबंधों के माध्यम से वस्तुओं का एक गुच्छा छानने की कोशिश कर रहा हूं। क्योंकि trigger_roles
फ़ील्ड में कई प्रविष्टियाँ हो सकती हैं जिन्हें मैंने contains
फ़िल्टर करने की कोशिश की । लेकिन जैसा कि इसे स्ट्रिंग्स के साथ उपयोग करने के लिए डिज़ाइन किया गया है, मैं बहुत असहाय हूं कि मुझे इस संबंध को कैसे फ़िल्टर करना चाहिए (आप values_list()
एटीएम को अनदेखा कर सकते हैं ।)।
यह फ़ंक्शन उपयोगकर्ता प्रोफ़ाइल से जुड़ा है:
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)
यद्यपि समाधान सरल हो सकता है, मेरा मस्तिष्क मुझे नहीं बताएगा।
आपकी सहायता के लिए धन्यवाद।