我的视线中包含以下代码。我想将查询结果(如果为真)保存到另一个模型中。如何实现呢?
def scan(request):
print(request.session)
if request.method == 'POST':
srch = request.POST['srh']
if srch:
match = ReportModel.objects.filter(Q(serialNumber__iexact=srch))
if match:
return render(request, 'admin/scan.html', {'sr': match})
else:
messages.error(request, 'No result yet for the requested device!')
else:
return redirect('/scan/')
return render(request, 'admin/scan.html')
答案 0 :(得分:0)
有一种方法。您可以创建自己的缓存。
逻辑是这些步骤:
A
和B
模型。search_result
模型中将None
字段定义为B
。A
模型进行查询(搜索)时,只需检查B.search_result
的值,是否为None
即可将search_result
的值更改为查询结果(请确保您的查询执行)并返回它。如果不是None
,则返回值(B.search_result
)。A
操作(插入,删除,更新)时,将B.search_result
更改为“无”。这是简单地缓存数据。并且,当您使用all()
时,queryset中的filter(**kwargs)
方法不会执行查询,因此将其包装到列表中或将其转储到json
中,而不是更改B.search_result
的值。