在Django中,如何查询以获得两个不同的值,如下所示?
profile_setting = (pSetting.objects.get(module="my_mod", setting_value=1) or
pSetting.objects.get(module="my_mod", setting_value=0))
答案 0 :(得分:10)
结帐django的Q
-class:
profile_setting = pSetting.objects.get(Q(module="my_mod"),\
Q(setting_value=1)|Q(setting_value=0))
此外,为了改善您的编码风格,请查看一些coding guidelines,您应该更好地命名您的模型类PSetting
。
答案 1 :(得分:4)
你确定你只抓住一个物体吗?
如果你试图获取一堆对象的查询集,你需要做的就是将过滤器链接在一起:
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的上述建议是正常的)
答案 2 :(得分:3)
此任务有一个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)
)
答案 3 :(得分:1)
profile_setting = pSetting.objects.get(module="my_mod",setting_value__in=[0,1])
答案 4 :(得分:0)
对于此类查询,请查看此文档link
并针对您的具体问题,您可以传递多个查询集对象(Q) 用于查询集|对于OR条件和&对于get()和filter()函数中的AND条件。