gpt4 book ai didi

python - django 中的动态 SQL 连接查询

转载 作者:行者123 更新时间:2023-11-29 06:43:42 27 4
gpt4 key购买 nike

这是我正在使用的三个非常简化的类:

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)

我希望能够获取与帐户相关联的用户,并通过 bool 属性 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 最 pythonic/djangonic 的方式是什么?

最佳答案

鉴于您只有一定数量的字段,我不太确定动态创建查询是什么意思。但是您也许可以使用查询是函数的关键字参数这一事实,因此可以用字典和 ** 语法替换:

kwargs = {'membership__is_tech': True}
ms_tech = microsoft.filter(**kwargs)

(请注意,您提供的过滤器中不应有 objects,因为 microsoft 已经是一个查询集,而不是模型。)

关于python - django 中的动态 SQL 连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19893179/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com