请解释以下内容
文档是在数据库中保存表单的一个示例:
>>> 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)
问题。为什么在第二种情况下转移字典POST?
答案 0 :(得分:1)
在这两种情况下,您实际上将request.POST
字典作为单个参数传递给表单的__init__
方法。这样,表单可以区分实际的帖子数据和其他参数。 request.POST
字典的完整性保存在data
属性中。稍后,在is_valid
方法中,字典中的键和值将根据表单的字段进行检查,并用于验证表单并填充cleaned_data
属性。