Django как избежать повторного попадания в базу данных - PullRequest
0 голосов
/ 02 марта 2020

Можно ли избежать попадания в базу данных при вызове функции модели по шаблону?

в моих представлениях:

class ContractListView(FilterView):
    model = Contract
    paginate_by = 100

    def get_queryset(self):
        qs = Contract.objects.prefetch_related('payments')
        return qs

в моем шаблоне я вызываю функцию модели контракта payment_status.

модель:

class Contract(models.Model):
    ...

    @property
    def payment_status(self):   
        ...

        payments = self.payments.values_list('payment_date', flat=True) # it is hitting database again

        return True if first in payments else False

Когда я вижу sql запросы в debug_toolbar prefetch_related работает нормально, но каждая строка повторяет запрос снова. Как это можно исправить?

1 Ответ

1 голос
/ 02 марта 2020

Можете ли вы попробовать это-

payments = [payment_obj.payment_date for payment_obj in self.payments.all()]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...