Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django ORM筛选器没有结果_Django_Forms_View_Filter_Orm - Fatal编程技术网

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如果您仍然对该问题感兴趣,我将通知您我在该问题中编写了解决方案。