0

我尝试将过滤器参数从表单传递到视图,以便通过自定义“索引”过滤 Django 中的对象:

profile_list = Profile.objects.filter(
    company=request.user.company,
)
if request.method == 'POST':
    search_key = request.POST.get('skey')
    search_query = request.POST.get('squery', None)
    profile_list = profile_list.filter(
        search_key=search_query
    )

但我不能使用这段代码,我得到:

Cannot resolve keyword 'search_key' into field. 

这很正常,没有 search_key 属性。我应该如何格式化它才能正常工作?

4

2 回答 2

1

如果您希望将变量的值search_key用作关键字,则需要将其放入 dict 并通过以下方式使用关键字扩展**

profile_list = profile_list.filter(
   **{search_key:search_query}
)



profile_list = profile_list.filter(
   **{'%s__contains' % search_key:search_query}
)
于 2013-05-28T07:15:14.807 回答
1

您可以创建 dict 并将其传递给过滤器

qdict = { search_key: search_query }
profile_list = profile_list.filter( **qdict)
于 2013-05-28T07:16:13.620 回答