Сохранить результат поискового запроса в модель с django - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть следующий код на мой взгляд.Я хочу сохранить результат запроса (если это правда) в другую модель.Как этого добиться?

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 голосов
/ 26 сентября 2018

Есть один способ.Вы можете создать свой собственный кеш.

Логика заключается в следующем:

  1. Предположим, есть модель A и B.
  2. Определить search_result поле как None в B модели.
  3. Когда вы выполняете запрос (поиск) через A модель, просто отметьте значение B.search_result, если оно None, измените значение search_result на запросрезультат (убедитесь, что ваш запрос выполнен) и верните его.Если это не None возвращаемое значение (B.search_result).
  4. При наличии манипуляции (вставка, удаление, обновление) в вашей модели A изменить B.search_result на Нет.

Это простое кеширование ваших данных.И когда вы используете методы all(), filter(**kwargs) в наборе запросов, он не выполняет запрос, поэтому поместите его в список или поместите в json, чтобы изменить значение B.search_result.

...