我用的是Django 2
这是我的view.py包含的内容
class SchoolCreateView(CreateView):
fields = ("name","principal","location")
model = models.School该视图使用的模板(html文件)包含以下代码:
form.instance.pk而且它是有效的。它返回正确的主键。我不明白为什么。当我没有在我的视图中定义表单对象时,为什么这会起作用?在Django中使用CBV时,是否会自动分配表单的值?
跟进问题。我知道form.instance代表模型中的一行,但是form本身代表什么呢?我目前对forms的理解是,它表示来自views.py的request.POST (基于我从函数视图获得的知识)。但这没有意义,因为客户端还没有发出POST请求,因为他仍然要创建一个数据条目,该数据条目将被POST,但还没有被POST。
发布于 2019-12-24 14:06:23
主键为主键字段,默认为id。如果您将其他字段定义为主键,则调用pk会返回此信息。
来自文档:
默认情况下,Django为每个模型提供以下字段:
id = models.AutoField(primary_key=True)这是自动递增的主键。
如果要指定自定义主键,请在其中一个字段上指定primary_key=True。如果Django看到您显式设置了Field.primary_key,它将不会添加自动id列。
每个模型只需要一个字段才能具有primary_key=True (显式声明或自动添加)。
https://stackoverflow.com/questions/59464445
复制相似问题