如何在特定字段而不是search_fields

时间:2015-07-25 19:29:45

标签: django django-admin

在Django中,如果我想搜索某些内容,我会在search_fields中指定字段。如果我想在某个特定字段上执行搜索该怎么办?我想实现类似下拉菜单的选项来选择要执行搜索的字段。(例如,所有,姓氏,名字,电话号码作为下拉选项)

1 个答案:

答案 0 :(得分:0)

我并不完全明白你的意思,但是。

假设用户搜索时您将搜索参数和搜索字段名称发送到您的视图。 _search_term和_search_field

if _search_term:
    result = model_cls.objects.all()
    args = Q()
    Q1 = Q(**{'{0}__icontains'.format(_search_field):_search_term})
    args = args | Q1
    result = result.filter(*(args,) )

了解我如何在不事先知道字段名称的情况下创建Q对象。 结果将是您过滤的行,我使用了icontains,您可以更改它,甚至可以让用户更改它。