Вот три очень упрощенный класса я работаю с:Dynamic SQL присоединиться запросом в Джанго
class User(AbstractBaseUser):
email = models.EmailField()
name = models.CharField()
is_admin = models.BooleanField()
phone_number = models.CharField()
class Accounts(models.Model):
name = models.CharField()
users = models.ManyToManyField(settings.USR_MODEL, through='Membership',
null=True, blank=True)
customer_id = models.IntegerField()
class Membership(models.Model):
user = models.ForeignKey(User)
company = models.ForeignKey(Accounts)
is_admin = models.BooleanField(default=False)
is_billing = models.BooleanField(default=False)
is_tech = models.BooleanField(default=False)
Я хотел бы быть в состоянии получить пользователь, связанные с аккаунтом и фильтровать их по булевым атрибутам is_admin, is_billing, is_tech. Сейчас я делаю:
microsoft = Accounts.objects.get(customer_id=1)
Затем я могу получить техническую связь, делая
ms_tech = microsoft.filter(membership__is_tech=True)
Это работает, однако, я хотел бы иметь возможность динамически создавать запросы для membership__is_tech/__is_billing/__is_admin/__is_foo/__is_bar/__is_quux/etc. Каков самый пифонический/djangonic способ сделать это?
Какими будут критерии фильтра? Вы хотите И или ИЛИ в зависимости от некоторых критериев? – karthikr
Мне просто нужно отфильтровать по одному типу атрибутов из Учетной записи. В приведенном выше примере я просто вернул ms_tech. В отдельном запросе я могу фильтровать is_foo или что угодно. – LiavK