【发布时间】:2019-08-27 19:25:40
【问题描述】:
所以我有这个作为基础模型:
class BaseModel(models.Model):
"""
base class for all models enforcing a UUID
"""
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
class Meta:
abstract = True
以编程方式,从我的 Django 类中,当我从此类派生并调用 .save() 一个新对象时,它是使用新的 UUID 创建的。
但是,当我使用 DataGrip 之类的工具查看数据库架构(最新的 Postgres)时,我发现 id 列在 default 定义中没有任何内容 - 为什么 default=uuid.uuid4 没有转换为数据库模式以某种方式?
当我使用 DataGrip 编辑数据库时,我必须为手动输入的记录手动插入一个新的 UUID 才能正确保存。
有没有办法解决这个问题?在我从 3rd 方数据库客户端添加行时自动生成 UUID?
【问题讨论】:
-
派生的时候是指子类这个类吗?你打电话给
super? -
我不是在调用 super,但所有子类在 Django 中都可以正常工作。这意味着,它们与基类及其建立的字段有关。我的问题是关于从 3rd 方工具自动生成 UUID,因为数据库模式的“默认”在
python manage migration之后仍然为空白,因此该工具不起作用。
标签: django postgresql uuid