Django manytomany filter with contains
У меня есть groups
в моем приложении, которое может иметь несколько employees
и несколько modules
class GroupModels(models.Model):
model_choices = (('Product', 'Product'), ('Kit', 'Kit'), ('Vendor', 'Vendor'), ('Warehouse', 'Warehouse'))
model = models.CharField(max_length=500, choices=model_choices)
class Group(models.Model):
name = models.CharField(max_length=500, default=0)
modules = models.ManyToManyField(GroupModels)
employees = models.ManyToManyField(Employee)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
Теперь при создании разрешений для определенного модуля, например Product
, я хочу проверить, есть ли этот модуль у пользователя employee
в любой из групп. Как мне это сделать?
Я создал две группы с пользователем, одна из которых содержит продукт, а другая нет, и использую это :
abc = Group.objects.filter(employees__pk=request.user.pk, modules__model='Product').exists()
print('abc', abc)
return abc
Правильно ли это?