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

时间:2019-12-24 05:58:40

标签: django django-templates django-views django-class-based-views

我使用Django 2

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

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

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

form.instance.pk

它有效。它返回正确的主键。我不明白为什么。 当我在视图中未定义表单对象时,为什么该方法起作用?在Django中使用CBV时,是否会自动分配form的值?

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

1 个答案:

答案 0 :(得分:0)

Pk是主键字段,默认情况下为/gi。如果您将其他字段定义为主键,则调用pk会返回该值。

摘自文档:

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

id

这是一个自动递增的主键。

如果您想指定自定义主键,请在您的一个字段中指定id = models.AutoField(primary_key=True) 。如果Django看到您已明确设置Field.primary_key,则不会添加自动ID列。

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