python - 内联表单集 is_valid 错误 : list index out of range

标签 python django django-class-based-views django-forms formset

亲爱的 Django 专家;

将内联表单集与基于类的 View 合并,通过列表索引异常的 is_valid 超出范围

我的代码非常简单(我猜)

#view.py
class EntityUpdate(updateView):
    def post(self, request, *args, **kwargs):
        self.object=None
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        form =myforms.add_place(request.POST)
        print(form.instance)
        urls_form = myforms.url_formset(self.request.POST , instance = form.instance)
        if form.is_valid() and urls_form.is_valid():
            return self.form_valid(form , urls_form)
        else:
            return self.form_invalid(form, urls_form)

#forms.py
#inlineformset definition
url_formset = inlineformset_factory(parent_model=Place,model=Urls , extra=1 )


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


知道这是什么吗?

提前致谢

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

最佳答案

事实证明,我正在向 inlineformset 发送一个空实例...不是很聪明,但出于某种原因,我认为 form(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)

关于python - 内联表单集 is_valid 错误 : list index out of range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22262753/

相关文章:

django - 基于类的 View MySQL DateTimeField 收到了一个简单的日期时间

python - 如何对过滤后的搜索查询进行排序/排序并将其呈现在 Django 上的另一个模板上?

python - Django:重写 get_queryset() 时如何注入(inject)数据?

python - Pandas 中的价格列对象为 int

python - Apache访问日志正则解析

python - 在 Python 中排除正则表达式内的字符序列(不仅是单个字符)

python - Azure:使用容器创建存储帐户并在 Python 中将 blob 上传到其中

python - 如何在 django-cms 中使用 iframe

python - 将csv文件附加到django中的电子邮件

django - 如何使用 wsgi_mod 在 ubuntu 中托管 django 项目