আমি বহু-থেকে-বহু সম্পর্কের মাধ্যমে গুচ্ছ অবজেক্টগুলিকে ফিল্টার করার চেষ্টা করছি। কারণ 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)
যদিও সমাধানটি খুব সহজ হতে পারে তবে আমার মস্তিষ্ক আমাকে বলবে না।
আপনার সাহায্যের জন্য ধন্যবাদ.