如何链式使用django查询过滤器以根据特定条件过滤

1 投票
1 回答
781 浏览
提问于 2025-04-18 16:46

我有一个Django页面,里面显示了从数据库表中生成的一个表格。在这个表格旁边,有一个表单可以让用户根据不同的条件进行筛选。当用户选择某个条件进行筛选时,我需要在我的视图中选择性地过滤数据库的调用。例如,我尝试了以下代码:

user_profiles = UserProfile.objects.filter(some_base_criteria=True).exclude(user__id__in=some_ids)

    if request.method == "POST":
        gender = request.POST["gender"]
        if gender != "any":
            user_profiles.filter(gender=gender)

但是这个方法没有按预期工作,因为它似乎是把这两个筛选条件用“或”连接在一起,而不是用“和”连接。

那么,如何才能把多个筛选条件用“和”连接在一起,而不需要把所有选项放在一个很长的筛选中呢?因为在某些查询中,筛选可能需要或不需要特定的条件。

1 个回答

3

这一行代码没有任何作用:

user_profiles.filter(gender=gender)

你必须重新赋值结果:

user_profiles = user_profiles.filter(gender=gender)

撰写回答