基于 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
(显式声明或自动添加)。
我使用 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
(显式声明或自动添加)。