【发布时间】:2010-09-26 15:45:42
【问题描述】:
在 Django 中,如何查询以获得两个不同的值,如下所示?
profile_setting = (pSetting.objects.get(module="my_mod", setting_value=1) or
pSetting.objects.get(module="my_mod", setting_value=0))
【问题讨论】:
在 Django 中,如何查询以获得两个不同的值,如下所示?
profile_setting = (pSetting.objects.get(module="my_mod", setting_value=1) or
pSetting.objects.get(module="my_mod", setting_value=0))
【问题讨论】:
结帐 django 的 Q-class:
profile_setting = pSetting.objects.get(Q(module="my_mod"),\
Q(setting_value=1)|Q(setting_value=0))
此外,为了改善你的编码风格,看看一些coding guidelines,你最好将你的模型类命名为PSetting。
【讨论】:
你确定你只抓取一个对象吗?
如果您尝试获取一组对象的查询集,您需要做的就是将过滤器链接在一起:
profile_setting = pSetting.objects.filter(module="my_mod", setting_value__in=0)
.filter(module="my_mod", setting_value__in=1)
但是,由于除了 setting_value 之外的所有内容都相同,因此您可以简单地查找列表或元组:
profile_setting = pSetting.objects.filter(module="my_mod", setting_value__in=[0,1])
(当且仅当您确定您将只获得一个对象作为对查询的响应时,上述 alexdb 的建议才适用)
【讨论】:
此任务有一个 Q() 对象 - 看这里:Complex Queries with Q() object
例如:
profile_setting = pSetting.objects.get(
Q(module="my_mod", setting_value=1) | Q(module="my_mod", setting_value=0)
)
【讨论】:
profile_setting = pSetting.objects.get(module="my_mod",setting_value__in=[0,1])
【讨论】:
对于此类查询,请查看此文档link
对于您的具体问题,您可以传递多个查询集对象(Q) 用于查询集 | get() 和 filter() 函数中的 OR 条件和 AND 条件。
【讨论】: