在Django中,如果我想搜索某些内容,我会在search_fields中指定字段。如果我想在某个特定字段上执行搜索该怎么办?我想实现类似下拉菜单的选项来选择要执行搜索的字段。(例如,所有,姓氏,名字,电话号码作为下拉选项)
答案 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,您可以更改它,甚至可以让用户更改它。