Django ORM筛选器没有结果
我有一个看法:Django ORM筛选器没有结果,django,forms,view,filter,orm,Django,Forms,View,Filter,Orm,我有一个看法: 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)
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,
...
})
个人搜索表格:
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请求发送
获取参数变量的请求和打印:
然而,过滤器总是没有结果。怎么了?解决方案 我解决了这个问题。解决方案是将querydict参数转换为dict对象。它看起来像:
...
filter_parameters = {}
for parameter in parameters:
filter_parameters[parameter] = parameters[parameter]
people = Person.objects.filter(**filter_parameters)
...
而且很有效。不知道。参数是什么?这个模型看起来像什么?你有与请求的值相关的数据吗?@DanielRoseman我添加了关于PersonSearchForm的信息。人员模型具有相同类型和名称的字段。能否在视图中打印
参数
,并显示结果?@DanielRoseman已添加此字段。在本例中,我只输入了first_name和last_name字段。@DanielRoseman如果您仍然对该问题感兴趣,我将通知您我在该问题中编写了解决方案。