Python 如何将django查询筛选器链接到按特定条件进行条件筛选
我有一个Django页面,显示从数据库表中的行生成的表。除了该表之外,还有表单中的筛选条件,因此用户可以按不同的条件进行搜索。当用户尝试按所选标准进行筛选时,我需要在视图中选择性地筛选数据库调用。例如,这就是我所尝试的:Python 如何将django查询筛选器链接到按特定条件进行条件筛选,python,django,Python,Django,我有一个Django页面,显示从数据库表中的行生成的表。除了该表之外,还有表单中的筛选条件,因此用户可以按不同的条件进行搜索。当用户尝试按所选标准进行筛选时,我需要在视图中选择性地筛选数据库调用。例如,这就是我所尝试的: user_profiles = UserProfile.objects.filter(some_base_criteria=True).exclude(user__id__in=some_ids) if request.method == "POST":
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)
这并不像预期的那样运行,因为它似乎是将这两个过滤条件放在一起,而不是将它们放在一起
如何将多个筛选条件组合在一起,而不将所有选项放在一个长筛选器中,因为筛选器可能需要也可能不需要任何给定查询的特定条件?此行无效:
user_profiles.filter(gender=gender)
您必须重新分配结果:
user_profiles = user_profiles.filter(gender=gender)
使用来自用户的变量(直接来自request.POST)是一种不好的做法。您必须创建表单,验证,然后使用dict form.com中的值_data@mrvol我已经在一些地方看到了这一点,但我发现在Django表单上获得良好的格式是很困难的,因为您实际上没有列出模板中单独呈现的字段。好了,现在我平静了=)