Django基于添加表单的编辑表单?

20 浏览
0 Comments

Django基于添加表单的编辑表单?

我制作了一个漂亮的表单,并编写了一个复杂的“添加”函数来处理它。它的开始部分如下:

def add(req):
    if req.method == 'POST':
        form = ArticleForm(req.POST)
        if form.is_valid():
            article = form.save(commit=False)
            article.author = req.user
            # 更多处理 ...

现在我真的不想在edit()方法中重复所有这些功能,所以我想edit可以使用完全相同的模板,并且可能只需向表单添加一个id字段,以便add函数知道它正在编辑什么。但是这有几个问题:

  1. add函数中,我应该在哪里设置article.id?它必须在form.save之后,因为那是创建文章的地方,但它永远不会达到那里,因为由于唯一约束,表单无效(除非用户编辑了所有内容)。我可以删除is_valid检查,但那样form.save会失败。
  2. 如果表单实际上是无效的,则在编辑函数中动态添加的字段不会被保留。

那么我该如何解决这个问题?

0