多表合一视图:如何处理字段错误?

Multiple form into one view: how to handle a field error?

我有这样一个模型:

class PersonneTravel(models.Model):
    personne = models.ForeignKey(Personne, verbose_name=_(u'Person'))
    travel = models.TextField(null=True, blank=True, verbose_name=_(u'Travel'))
    date_start = models.DateTimeField(default=None, null=True, blank=True,
                                      editable=True, verbose_name=_(u"Start"))
    date_end = models.DateTimeField(default=None, null=True, blank=True,
                                    editable=True, verbose_name=_(u"End"))
    comments = models.TextField(null=True, blank=True,
                                verbose_name=_(u'Comments'))

我显示一个人所有旅行的列表。 我想做的是让在线编辑任何旅行的可能性,或者添加一个到一个视图

这是我的做法:

我最大且唯一的问题是出现错误时:如果我在检查表格时尝试添加错误,并且出现问题,我会这样做,例如:

def form_valid(self, form):
    fc = form.cleaned_data
    d_start = fc['date_start']
    d_end = fc['date_end']
    comments = fc.get('comments', None)

    if d_end and d_start:
        if d_end > datetime.datetime.now().date() > d_start:
            form.add_error('date_start', _(u"Can't start in the past..."))
            form.add_error('date_end', _(u"...and end in the future!"))
            return super(IndexView, self).form_invalid(form)

一切似乎都很好...除了错误字段 总是 进入 "add new" 空白表格,永远不会进入良好的 "edit" 表格。你会如何处理?

当您处理相同类型的表单列表时,为此需要 Django Formsets。 Formset 为您提供了创建新记录以及删除和更新旧记录的内置功能。