У меня есть таблица форм того же класса, которая содержит ModelChoiceField. И каждая форма в одной строке имеет тот же набор запросов для этого поля. Проблема в том, что каждый раз, когда форма отображается, это новый запрос, который увеличивает невыносимо количество запросов.Django multiple forms with modelchoicefield -> слишком много запросов
Единственное решение, с которым я столкнулся, состоит в том, чтобы построить форму на ходу с помощью js вместо того, чтобы позволить django отображать ее самостоятельно. Есть ли способ кэшировать эти запросы или несколько предварительно загрузить его сразу?
views.py:
shift_table=[]
for project in calendar_projects:
shift_table.append([])
project_branches = project.branches.all()
for i, week in enumerate(month):
for day in week:
shift_table[-1].append(
CreateShiftCalendarForm(initial={'date': day}, branch_choices=project_branches))
forms.py:
CreateShiftCalendarForm(EditShiftCalendarForm):
class Meta(ShiftForm.Meta):
fields = ('project_branch', 'date') + ShiftForm.Meta.fields
widgets = {'date': forms.HiddenInput(), 'length': forms.NumberInput(attrs={'step': 'any'}), 'project_branch': forms.Select()}
def __init__(self, *args, **kwargs):
branch_choices = kwargs.pop('branch_choices', ProjectBranch.objects.none())
super(CreateShiftCalendarForm, self).__init__(*args, **kwargs)
self.fields['project_branch'].queryset = branch_choices
self.fields['project_branch'].empty_label = None
Можете ли вы предоставить свой код формы? – GwynBleidD
Там вы идете @GwynBleidD – Dalbenn