如何链式使用django查询过滤器以根据特定条件过滤
我有一个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)