基于 Django Class 的视图是否自动为模板分配表单值

Does Django Class Based Views automatically assign form value for templates

我使用 Django 2

这是我的 view.py 包含的内容

class SchoolCreateView(CreateView):
     fields = ("name","principal","location")
     model = models.School

此视图使用的模板(html 文件)包含代码:

form.instance.pk

并且有效。它 returns 是正确的主键。我不明白为什么。 当我没有在我的视图中定义表单对象时,为什么这会起作用?在 Django 中使用 CBV 时是否自动分配表单的值?

跟进问题。我知道 form.instance 代表模型中的一行,但 form 本身代表什么?我目前对表单的理解是它代表 views.py 中的 request.POST (基于我从函数视图中获得的知识)。但这没有意义,因为客户尚未发出 POST 请求,因为他仍将创建一个将发布但尚未发布的数据条目。

Pk为主键字段,默认为id。如果您将其他字段定义为主键,调用 pk 将 return this.

来自文档:

默认情况下,Django 为每个模型提供以下字段:

id = models.AutoField(primary_key=True)

这是一个自增主键。

如果您想指定自定义主键,请在您的其中一个字段中指定 primary_key=True。如果 Django 发现你明确设置了 Field.primary_key,它不会添加自动 id 列。

每个模型只要求一个字段具有 primary_key=True(显式声明或自动添加)。