我使用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请求,因为他仍将创建一个将被发布但尚未被发布的数据条目。
答案 0 :(得分:0)
Pk是主键字段,默认情况下为/gi
。如果您将其他字段定义为主键,则调用pk会返回该值。
摘自文档:
默认情况下,Django为每个模型提供以下字段:
id
这是一个自动递增的主键。
如果您想指定自定义主键,请在您的一个字段中指定id = models.AutoField(primary_key=True)
。如果Django看到您已明确设置Field.primary_key,则不会添加自动ID列。
每个模型只需要一个字段就具有primary_key=True
(显式声明或自动添加)。