Есть вьюха, в ней через цикл показывается modelformset_factory (список форм). Формы заполняются данными из модели. В каждой форме есть поле типа ModelChoiceField, где выпадающий список формируется queryset, я его задаю явно.
В итоге при генерации ModelChoiceField, джанго каждый раз запрашивает однотипные данные из БД.
Например если у меня 5 форм, то и соответсвенно выполняется 5 однотипных запросов для этого поля.
Вопрос как при генерации вьюхи как-то кэшировать queryset.
class InvoiceCreate(FormView):
template_name = 'invoice.html'
context_object_name = 'invoice'
def get_form(self, form_class=None):
InvoiceFormSet = modelformset_factory(Invoice, form=InvoiceForm, exclude=('order_id',))
formset = InvoiceFormSet(queryset=Invoice.objects
.filter(order_id=self.kwargs.get('order_pk'))
.select_related('service_id')
.defer('service_id__type'))
return formset
class InvoiceForm(forms.ModelForm):
service_id = forms.ModelChoiceField(
label='',
queryset=Service.objects.all()
)
class Meta:
model = Invoice
fields = ('service_id', 'quantity_type', 'quantity', 'price',)