django:form#u valid()缺少1个必需的位置参数:';表格';
我想知道如何在我的django:form#u valid()缺少1个必需的位置参数:';表格';,django,django-templates,django-views,Django,Django Templates,Django Views,我想知道如何在我的form\u valid()函数中解决这个问题: form_valid()缺少1个必需的位置参数:“form” 我使用的是Django基于类的视图和表单集。但是,可以获得IntegrityError,我添加了一个try/except,以便在表单有效时保存表单集,并在收到此问题时用错误消息重定向模板 class AnimalCreateView(CreateView): model = Animal template_name = 'animal_form.htm
form\u valid()
函数中解决这个问题:
form_valid()缺少1个必需的位置参数:“form”
我使用的是Django基于类的视图
和表单集
。但是,可以获得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\u valid()
函数中做些什么才能解决我的问题,并在同一模板表单上重定向用户,并显示错误消息
谢谢def form\u valid(self,request,form):
应该是def form\u valid(self,form):
您可以通过self.request
访问请求对象
def form_valid(self, 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(self.request, self.template_name)
此外,如果form.is\u valid(),则不需要再次调用:
,因为已经确定了这一点-因此执行form\u valid
def form\u valid(self,request,form):
应该是def form\u valid(self,form):
您可以通过self.request
访问请求对象
def form_valid(self, 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(self.request, self.template_name)
此外,如果form.is\u valid(),您不需要再次调用
:
因为已经确定了这一点-因此执行form\u valid
def form\u valid(self,request,form):
应该是def form\u valid(self,request,form):
应该是def form\u valid(self,form):
是的,你说得对!我还有一个问题,除了IntegrityError之外,我是否必须替换,或者它是好的?因为formset.save()
是以下异常的直接原因。如果您希望出现IntegrityError
则不会有任何影响,但没有关于您的型号的更多信息,我不知道。例如,如果您的外键是OneToOneField
我将根据我的IntegrityError
创建一个新问题谢谢!是的,你是对的!我还有一个问题,我必须替换除IntegrityError之外的,还是它很好?因为formset.save()
是以下异常的直接原因。如果您希望出现IntegrityError
则不会有任何影响,但没有关于您的型号的更多信息,我不知道。例如,如果您的外键是OneToOneField
我将根据我的IntegrityError
创建一个新问题谢谢你!