Нужно ли отсеивать лишние запросы в коде?

Здравствуйте!

Вот небольшой кусок кода для вывода сообщений между пользователями:

messages = QuerySet #тут queryset с сообщениями
context['message_list'] = messages

# мне нужно пометить просмотренными сообщения для получателя
# обычно я постоянно делаю запрос на обновление:
Message.objects.filter(recipient=self.request.user, viewed__isnull=True).update(viewed=timezone.now())

# но ведь можно заранее проверить, есть ли новые сообщения и если нужно сделать запрос (вариант 2):
not_viewed_message_ids = [msg.pk for msg in messages if msg.recipient == self.request.user and not viewed]
if not_viewed_message_ids:
    Message.objects.filter(pk__in=not_viewed_message_ids).update(viewed=timezone.now())


Что скажите на счет второго варианта, правильно ли так делать или не нужно задачи БД перекладывать на python?
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 1
mututunus
@mututunus
Backend developer (Python, Golang)
Лучше так:
if Message.objects.filter(recipient=self.request.user, viewed__isnull=True).exists():
    Message.objects.filter(recipient=self.request.user, viewed__isnull=True).update(viewed=timezone.now())
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы