【发布时间】:2021-11-07 23:03:45
【问题描述】:
def get_client_queryset(query=None):
queryset = []
queries = query.split(' ')
for q in queries:
details = clients.objects.filter(
Q(name__icontains=q) |
Q(number__icontains=q) |
Q(email__icontains=q)
).distinct().defer(unique_num)
for client in details:
queryset.append(client)
return list(set(queryset))
.defer('unique_num') 仍在返回并显示在查询集中。提供的功能是搜索功能
【问题讨论】:
-
这是有道理的,因为
.defer(...)意味着您将稍后在必要时延迟加载该字段。 -
换句话说,
.defer()表示“我将(可能)不需要该字段”,但如果我需要它,请进行查询以获取它。 -
您到底想做什么。 Likey 有比对每个
queries项进行查询更好的解决方案。 -
我想返回除 'unique_num' 和 'primary_key' 之外的所有其他字段
-
那么你可以使用
.values()并列出所有要返回的项目,但我不明白为什么不应该返回unique_num和primary_key。您可以创建一个省略这些字段的序列化程序。通常最好返回模型对象,并让此类序列化程序处理如何将其转换为 JSON/...
标签: python django search django-views