【发布时间】:2017-07-08 00:18:06
【问题描述】:
我有一个看法:
def PeopleView(request):
...
parameters = copy.deepcopy(request.GET)
for parameter in request.GET:
if not request.GET.get(parameter):
del parameters[parameter]
people = Person.objects.filter(**parameters)
search_form = PersonSearchForm()
return render(request, 'persons/people.html', {
'people': people,
'search_form': search_form,
...
})
PersonSearchForm:
class PersonSearchForm(forms.Form):
first_name = forms.CharField(required=False)
last_name = forms.CharField(required=False)
second_name = forms.CharField(required=False)
country = forms.CharField(required=False)
city = forms.CharField(required=False)
gender = forms.CharField(widget=forms.Select, required=False)
birthday = forms.DateField(required=False)
school = forms.CharField(required=False)
university = forms.CharField(required=False)
profession = forms.CharField(required=False)
Person 模型具有来自 PersonSearchForm 的同名字段。此表单由用户作为 GET 请求发送。
但是过滤器总是没有结果。怎么了?
【问题讨论】:
-
不知道。参数是什么?模型是什么样的?您有与请求值相关的数据吗?
-
@DanielRoseman 我添加了有关 PersonSearchForm 的信息。 Person 模型具有相同类型和名称的字段。
-
能否在视图中打印
parameters并显示结果? -
@DanielRoseman 已添加。在这个例子中,我只输入了 first_name 和 last_name 字段。
-
@DanielRoseman 如果您仍然对这个问题感兴趣,我会通知您我在问题中编写了解决方案。
标签: django forms view filter orm