Мне интересно, как я могу решить эту проблему в моей функции form_valid()
:
form_valid () отсутствует 1 обязательный позиционный аргумент: 'form'
Я использую Django Class Based View
и formsets
.Но можно получить IntegrityError
, и я добавил try/except
, чтобы сохранить набор форм, когда формы действительны, и перенаправить шаблон с сообщением об ошибке, когда я получу эту проблему.
class AnimalCreateView(CreateView):
model = Animal
template_name = 'animal_form.html'
def get_context_data(self, **kwargs):
context = super(AnimalCreateView, self).get_context_data(**kwargs)
foo_queryset = Foo.objects.all()
context['FooFormSets'] = FooFormSet(self.request.POST or None, self.request.FILES or None,
prefix='foo', queryset=foo_queryset)
return context
def form_valid(self, request, form):
context = self.get_context_data()
formsets = context['FooFormSets']
if form.is_valid():
self.object = form.save()
try:
if formsets.is_valid():
formsets.instance = self.object
formsets.save(commit=False)
for element in formsets:
element.save(commit=False)
formsets.save()
except IntegrityError:
messages.error(self.request, _(f"Issue with foo"))
return render(request, self.template_name)
return super(AnimalCreateView, self).form_valid(form)
Я хотел бы знать, что мне нужно сделать в моей функции form_valid()
, чтобы решить мою проблему и перенаправить пользователя в той же форме шаблона с сообщением об ошибке.
Спасибо