【发布时间】:2021-10-21 15:16:42
【问题描述】:
我在 Django 中有一个非托管模型:
class Person(models.Person):
name = models.CharField(max_length=200)
class Meta:
managed = False
db_table = '"public"."person"'
在我的测试中,我尝试在数据库中创建一个 Person 条目:
person = Person(name="Ariel")
person.save()
然后我得到一个错误:
django.db.utils.IntegrityError: null value in column "id" of relation "person" violates not-null constraint
DETAIL: Failing row contains (null, Ariel).
外部测试,一切正常。在测试中,我通过加载模式转储使用非托管对象引用的表来初始化数据库。
Django docs 声明“不会对此模型执行任何数据库表创建、修改或删除操作”,并且“模型处理的所有其他方面与正常情况完全相同”,包括“添加一个如果你不声明它,模型的自动主键字段”。但这不意味着这段代码应该可以工作吗?为什么 Django 和 Postgres 不处理 id?难道我做错了什么?我该如何解决?
【问题讨论】:
-
您需要在模型中声明
id字段,例如id=models.AutoField(primary_key=True)
标签: django postgresql