使用OR条件的Django查询

使用OR条件的Django查询,django,django-queryset,Django,Django Queryset,在Django中,如何查询以获得两个不同的值,如下面所示 profile_setting = (pSetting.objects.get(module="my_mod", setting_value=1) or pSetting.objects.get(module="my_mod", setting_value=0)) 此任务有一个Q()对象-请看这里: 例如: profile_setting = pSetting.objects.get( Q(

在Django中,如何查询以获得两个不同的值,如下面所示

profile_setting = (pSetting.objects.get(module="my_mod", setting_value=1) or
                   pSetting.objects.get(module="my_mod", setting_value=0))
此任务有一个
Q()
对象-请看这里:

例如:

profile_setting = pSetting.objects.get(
    Q(module="my_mod", setting_value=1) | Q(module="my_mod", setting_value=0)
)
结帐django's:


此外,为了改进编码风格,请查看一些,您最好将模型类命名为
PSetting

您确定只抓取了一个物体吗

 profile_setting = pSetting.objects.get(module="my_mod",setting_value__in=[0,1])
如果您试图获取一组对象的查询集,则只需将过滤器链接在一起:

profile_setting = pSetting.objects.filter(module="my_mod", setting_value__in=0)
                         .filter(module="my_mod", setting_value__in=1)
但是,由于除了设置_值之外,其他所有内容都是相同的,因此您可以简单地查找列表或元组:

profile_setting = pSetting.objects.filter(module="my_mod", setting_value__in=[0,1])

(当且仅当您确信您将只得到一个对象作为查询的响应时,上述alexdb的建议就可以了)

对于这种类型的查询,请查看此文档

对于您的特定问题,您可以传递多个queryset对象(Q)
对于queryset,在get()和filter()函数中都使用| for或condition和&for and condition。

我同意这种样式,也可以查看Python的PEP8()以获得样式指南。
profile_setting = pSetting.objects.filter(module="my_mod", setting_value__in=[0,1])