使用Django将搜索查询结果保存到模型中

时间:2018-09-25 13:20:21

标签: python django search model updatemodel

我的视线中包含以下代码。我想将查询结果(如果为真)保存到另一个模型中。如何实现呢?

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')

1 个答案:

答案 0 :(得分:0)

有一种方法。您可以创建自己的缓存。

逻辑是这些步骤:

  1. 我们假设有AB模型。
  2. search_result模型中将None字段定义为B
  3. 通过A模型进行查询(搜索)时,只需检查B.search_result的值,是否为None即可将search_result的值更改为查询结果(请确保您的查询执行)并返回它。如果不是None,则返回值(B.search_result)。
  4. 对模型进行A操作(插入,删除,更新)时,将B.search_result更改为“无”。

这是简单地缓存数据。并且,当您使用all()时,queryset中的filter(**kwargs)方法不会执行查询,因此将其包装到列表中或将其转储到json中,而不是更改B.search_result的值。