如何链接django查询过滤器以按特定条件有条件地过滤

时间:2014-08-10 23:10:30

标签: python django

我有一个Django页面,显示从数据库表中的行生成的表。除了该表之外,表单中还有过滤条件,因此用户可以按不同的标准进行搜索。当用户尝试按照所选标准进行过滤时,我需要在我的视图中选择fitler数据库调用。例如,这就是我尝试过的:

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 个答案:

答案 0 :(得分:3)

此行无效:

user_profiles.filter(gender=gender)

你必须重新分配结果:

user_profiles = user_profiles.filter(gender=gender)