【发布时间】:2019-04-25 01:02:19
【问题描述】:
我想知道如何在我的 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() 函数中做什么才能解决我的问题并将用户重定向到带有错误消息的同一模板表单上。
谢谢
【问题讨论】:
-
def form_valid(self, request, form):应该是def form_valid(self, form):。
标签: django django-templates django-views