按自定义属性过滤对象

时间:2013-05-28 07:12:21

标签: django django-models

我尝试将filter参数从表单传递给视图,以便通过自定义“index”过滤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属性。我该如何格式化才能正常工作?

2 个答案:

答案 0 :(得分:1)

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

使用关键字扩展
profile_list = profile_list.filter(
   **{search_key:search_query}
)



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

答案 1 :(得分:1)

你可以创建dict并将其传递给过滤为

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