这是我正在使用的三个非常简化的类:
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 / 等动态创建查询什么是最pythonic / djangonic的方法?