Django "OR" 像查询集中的语句?

Django "OR" like statement in Queryset?

只是在 Django 上有一个简单的语法问题, 想象以下查询集:

queryset = Requests.objects.get_queryset().filter(
    status='Pending',
    up_rank__gte=config.REQ_RANK - 10,
    down_rank__gte=config.REQ_RANK - 10
)

有没有什么方法可以像这样设置我的查询:

up_vote__gte=config.REQ_RANK - 10 OR down_vote__gte=config.REQ_RANK - 10 ?! (See pseudo OR)

因为我想同时过滤 up_rank 和 down_rank __gte。我知道的唯一方法是查询链,但对我来说这似乎效率不高,除了查询链语句还有其他方法还是我只是胡说八道链就可以了?

提前致谢

是的,您可以将条件包装在 Q objects [Django-doc] 中,并使用按位或运算符 (|),这将生成一个 Q 对象,即析取:

from django.db.models import <b>Q</b>

queryset = Requests.objects.get_queryset().filter(
    <b>Q(</b>up_rank__gte=config.REQ_RANK - 10<b>) |</b>
    <b>Q(</b>down_rank__gte=config.REQ_RANK - 10<b>)</b>,
    status='Pending'
)