Python 使用保存表单更新数据库中记录时的POST角色

Python 使用保存表单更新数据库中记录时的POST角色,python,django,Python,Django,请解释一下 文档是在数据库中保存表单的一个示例: >>> from myapp.models import Article >>> from myapp.forms import ArticleForm #1 # Create a form instance from POST data. >>> f = ArticleForm(request.POST) # Save a new Article object from the form'

请解释一下

文档是在数据库中保存表单的一个示例:

>>> from myapp.models import Article
>>> from myapp.forms import ArticleForm

#1
# Create a form instance from POST data.
>>> f = ArticleForm(request.POST)
# Save a new Article object from the form's data.
>>> new_article = f.save()

#2
# Create a form to edit an existing Article, but use
# POST data to populate the form.
>>> a = Article.objects.get(pk=1)
>>> f = ArticleForm(request.POST, instance=a)
>>> f.save()
在第一种情况下,需要向数据库添加新记录

第二种情况是更新数据库中的现有记录

在这两种情况下,都会传输到添加或更新的POST字典。但后者通过关键字参数实例传输到字典“a”(但用于更新记录“a”,而不是POST)


问题。为什么在第二种情况下是转移到dictionary POST?

在这两种情况下,您实际上都将
请求作为单个参数传递给表单的
\uuuu init\uu
方法。这样,表单就可以区分实际的post数据和其他参数。
request.POST
字典的完整性保存在
data
属性中。稍后,在
is\u valid
方法中,字典中的键和值将根据表单的字段进行检查,并用于验证表单和填充
cleaned\u数据
属性

我不太清楚这里有什么问题。第二个示例使用数据
request.POST
更新实例
a
。第一个示例使用数据
request.POST
创建一个新实例。