Django 为什么在保存子实例时,未保存的父类实例会导致NOTNULL约束错误?

Django 为什么在保存子实例时,未保存的父类实例会导致NOTNULL约束错误?,django,django-models,Django,Django Models,我正在关注youtube上的一篇关于美丽的教程。在本教程中,他尝试使用名为Language的未保存父模型实例实例化子模型实例。但是当他运行代码时,他会得到一个IntegrityError:notnull约束失败:example\u framework.language\u id 讲述人接着解释说,这是因为他没有首先对父实例调用save(),而没有主键。这是教程中的代码,下面是youtube中他遇到错误的部分: 我不明白为什么这会产生错误。spring不引用java变量引用的同一个对象吗?因此,如

我正在关注youtube上的一篇关于美丽的教程。在本教程中,他尝试使用名为
Language
的未保存父模型实例实例化子模型实例。但是当他运行代码时,他会得到一个
IntegrityError:notnull约束失败:example\u framework.language\u id

讲述人接着解释说,这是因为他没有首先对父实例调用
save()
,而没有主键。这是教程中的代码,下面是youtube中他遇到错误的部分:


我不明白为什么这会产生错误。spring不引用java变量引用的同一个对象吗?因此,如果java上调用了
save()
,spring变量引用的框架对象不应该立即具有主键吗

否,设置属性时将获取主键。严格来说,您所描述的可能是可能的,但它不是以这种方式实现的。@WillemVanOnsem好的,所以错误发生得比
spring.save()
早得多,然后,它发生在Framework()对象的实例化过程中,对吗?我仍然认为这很奇怪,因为此时
spring
变量本身也还没有被持久化到数据库中。因此,在这种情况下,数据库完整性错误很奇怪。
java = Language(name='Java')
    spring = Framework(name='Spring', language=java)
    java.save()
    spring.save()