我正在使用django和postgresql。在查看psql以查看数据库和表模式时,我注意到外键约束被命名为modelname__field_id_hexnum_fk_basemodel_field_id
的大多数时候,但在某些情况下,它是一个散列,例如D19cb71bc44206c3464da32ad943c8f8
。为什么会这样?是因为约束名称的长度还是其他一些因素造成的?
答案 0 :(得分:0)
可能与多对多关系中介连接表的逻辑相同?
https://docs.djangoproject.com/en/2.0/ref/models/fields/
在幕后,Django创建了一个中间连接表 代表多对多的关系。默认情况下,此表名称 是使用多对多字段的名称和名称生成的 包含它的模型的表。由于某些数据库没有 支持表格名称超过一定长度,这些表名称将是 自动截断为64个字符,唯一性哈希将是 使用