Django 查询集过滤不提供预期的行为

Django queryset filtering not providing expected behavior

我有一个应用程序在前端接收用户的输入。

我尝试实现的功能应该在前端显示玩家 <=0 的所有标题,或者在数据库中显示 NULL 值。

 player_filter = 'lte'
 if playerinput_high == '0':
        player_kwargs = {
                'player_points__isnull': True,
                'player_points__{}'.format(reviewsign_high): float(playerinput_high)
            }

        stats = stats.filter(**player_kwargs)

但是,我在这里没有得到任何结果。如果我删除一个参数,即 'player_reviews__isnull': True,我会得到所有评论小于或等于 0 的标题。

反之亦然,如果我删除 'player_reviews__{}'.format(playersign_high): float(playerinput_high),我会得到所有带有 NULL 统计数据的统计数据。但它们放在一起,显示 0 个结果。关于这里的解决方案的任何想法?谢谢!

Django 的 ORM 中的多个过滤器在生成 SQL 时默认为 'AND'。您应该考虑使用 Q 对象来指定 'OR' 查询。 https://docs.djangoproject.com/en/3.2/topics/db/queries/#complex-lookups-with-q-objects

from django.db.models import Q
titles = titles.filter(Q(**review_kwargs, _connector=Q.OR))