Django Formset Обязательные поля в валидации набора форм
У меня есть проблемы с formset, где я не знаю почему, не могу заполнить начальные значения и formset выбрасывает обратно ошибки "Это поле обязательно.". Я думал, что когда я передаю queryset для фильтровать формы, они будут предварительно заполнены заданными значениями.
Как сделать это правильно? Спасибо за ответы.
forms.py
class CompositionForm(ModelForm):
positionId = PositionsChoiceFields(queryset=Position.objects)
class Meta:
model = Players
fields = ("positionId",
...
)
labels = {"positionId": "Nas",
...
}
widgets = {}
for i, f in enumerate(fields[1:]):
widgets[f] = forms.TextInput(
attrs={"disabled": True, "class": "show-input-as-text form-control flex-fill", "required": "false"})
def __init__(self, *args, **kwargs):
super(CompositionForm, self).__init__(*args, **kwargs)
PlayersFormSet = modelformset_factory(Players, form=CompositionForm,)
views.py
class CompositionView(BaseView):
template_name = "..."
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
return context
def get(self, *args, **kwargs):
# context = self.get_context_data(**kwargs)
context = {}
team = Teams.objects.get(userId=self.request.user.id)
formset = PlayersFormSet(queryset=Players.objects.filter(teamId=team, ), )
context["formset"] = formset
return render(self.request, self.template_name, context=context)
def post(self, *args, **kwargs):
context = self.get_context_data(**kwargs)
team = Teams.objects.get(userId=self.request.user.id)
form = PlayersFormSet(data=self.request.POST, queryset=Players.objects.filter(teamId=team))
form.clean()
print(form.errors)
print(self.request.POST)
print(form.is_valid())
return render(self.request, self.template_name, context=context)
[{'positionId': ['Это поле обязательно для заполнения'], ...
<QueryDict: 'form-TOTAL_FORMS': ['5'], 'form-INITIAL_FORMS': ['4'], 'form-MIN_NUM_FORMS': ['0'], 'form-MAX_NUM_FORMS': ['1000'], 'form-2-positionId': ['1'], 'form-3-positionId': ['1']}>
.
Ложь