Python 内联表单集无效错误:列表索引超出范围

Python 内联表单集无效错误:列表索引超出范围,python,django,django-class-based-views,django-forms,formset,Python,Django,Django Class Based Views,Django Forms,Formset,尊敬的Django专家 通过将内联表单集与基于类的视图合并,通过列表索引超出范围的异常,该表单集是有效的 我的代码很简单(我猜) 回溯: get_响应中的文件“/usr/local/lib/python2.7/dist packages/django/core/handlers/base.py” 114响应=包装的回调(请求,*回调参数,**回调参数) 视图中的文件“/usr/local/lib/python2.7/dist-packages/django/views/generic/base

尊敬的Django专家

通过将内联表单集与基于类的视图合并,通过列表索引超出范围的异常,该表单集是有效的

我的代码很简单(我猜)

回溯: get_响应中的文件“/usr/local/lib/python2.7/dist packages/django/core/handlers/base.py” 114响应=包装的回调(请求,*回调参数,**回调参数) 视图中的文件“/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py” 69返回自调度(请求,*args,**kwargs) 文件“/usr/local/lib/python2.7/dist-packages/brages/views.py”在分派中 140请求,*args,**kwargs) 分派中的文件“/usr/local/lib/python2.7/dist packages/django/views/generic/base.py” 87返回处理程序(请求、*args、**kwargs) post中的文件“/home/ramez/code/eventsrun project/eventsrun/eventsrunpa/views.py” 483如果form.is\u valid()和URL\u form.is\u valid(): 中的文件“/usr/local/lib/python2.7/dist packages/django/forms/formsets.py”有效 292err=自我错误 文件“/usr/local/lib/python2.7/dist packages/django/forms/formsets.py”出现错误 267self.full_clean() 文件“/usr/local/lib/python2.7/dist packages/django/forms/formsets.py”的完整格式 314形式=自我。形式[i] 文件“/usr/local/lib/python2.7/dist packages/django/utils/functional.py”__ 49res=instance.\uuuuu dict\uuuuu[self.func.\uuuuuu name\uuuuuuu]=self.func(实例) forms中的文件“/usr/local/lib/python2.7/dist packages/django/forms/formsets.py” 133forms=[self.\u construct\u form(i)表示x范围内的i(self.total\u form\u count())] 文件“/usr/local/lib/python2.7/dist packages/django/forms/models.py”,格式为 848形式=超级(BaseInlineFormSet,self)。\u构造\u形式(i,**kwargs) 文件“/usr/local/lib/python2.7/dist packages/django/forms/models.py”,格式为 572kwargs['instance']=self.get_queryset()[i] 文件“/usr/local/lib/python2.7/dist-packages/django/db/models/query.py”位于__ 115返回self.\u结果\u缓存[k] 异常类型:索引器位于/places/Place formset/edit/ 异常值:列表索引超出范围 知道这是什么吗

提前谢谢

编辑:
我还试图跳过验证(is_valid()),但仍然在.save()中出现了相同的错误。

结果是我向inlineformset发送了一个空实例。。。不是很聪明,但出于某种原因,我认为表单(request.POST)实际上会知道这是一个现有记录

工作执行:

class EntityUpdate(updateView):
    def post(self, request, *args, **kwargs):
        form_class = self.get_form_class() 
        form = self.get_form(form_class)
        p = get_object_or_404(Entity, slug=kwargs['slug'])
        urls_form = myforms.url_formset(self.request.POST , instance = p) #Loading the formset with the appropriate instance parameter
        if form.is_valid() and urls_form.is_valid():
            return self.form_valid(form , urls_form)
        else:
            return self.form_invalid(form, urls_form)

内联表单集在CBV中不受直接支持。也许这会有帮助:两个问题:你在用self.object=None行做什么,看起来就像你在分配“form”两次,在第二次之前对你创建的两行表单什么都不做!很抱歉迟了答复。1) self.object=None是一种黑客行为,因为在CBV执行之后,它会检查self.object 2)您完全正确。这个片段很老了,我以前“更”是个新手现在。。。因此,这段代码包含了很多黑客,我应该修改,因为我现在比较了解了。对答案进行了编辑。非常感谢。 Traceback: File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 114. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in view 69. return self.dispatch(request, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/braces/views.py" in dispatch 140. request, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch 87. return handler(request, *args, **kwargs) File "/home/ramez/code/eventsrun-project/eventsrun/eventsrunapp/views.py" in post 483. if form.is_valid() and urls_form.is_valid(): File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in is_valid 292. err = self.errors File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in errors 267. self.full_clean() File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in full_clean 314. form = self.forms[i] File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py" in __get__ 49. res = instance.__dict__[self.func.__name__] = self.func(instance) File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in forms 133. forms = [self._construct_form(i) for i in xrange(self.total_form_count())] File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py" in _construct_form 848. form = super(BaseInlineFormSet, self)._construct_form(i, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py" in _construct_form 572. kwargs['instance'] = self.get_queryset()[i] File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in __getitem__ 115. return self._result_cache[k] Exception Type: IndexError at /places/Place-formset/edit/ Exception Value: list index out of range
class EntityUpdate(updateView):
    def post(self, request, *args, **kwargs):
        form_class = self.get_form_class() 
        form = self.get_form(form_class)
        p = get_object_or_404(Entity, slug=kwargs['slug'])
        urls_form = myforms.url_formset(self.request.POST , instance = p) #Loading the formset with the appropriate instance parameter
        if form.is_valid() and urls_form.is_valid():
            return self.form_valid(form , urls_form)
        else:
            return self.form_invalid(form, urls_form)