Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django:form#u valid()缺少1个必需的位置参数:';表格';_Django_Django Templates_Django Views - Fatal编程技术网

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
创建一个新问题谢谢你!