解决 models.E006 错误
来源:7-9 通过migrate生成表和本章小结
duskash
2021-12-28
这一节很多人遇到 models.E006
错误, 我也遇到了, 查了些资料后解决该问题
简单来说, 这个错误就是字段名冲突导致的. 比如报错的第一条, 一般是 courses.Course.teacher
和 users.basemodel
clashes. 这个 clashed 就是冲突的意思.
要解决这个冲突也很简单, 就是哪里冲突就改哪里的名字. 例如将 courses.Course
这个模型里的 teacher
字段改为 course_teacher
即可. 当然其他名字也可以, 方便自己开发就行.
但是造成这个错误的具体原因, 我还不是非常清楚. 因为看起来 users.basemodel
里面就只有 created_time
和 updated_time
两个字段. 进到数据库里面看, 只是多一个 id
字段而已.
个人猜测是因为所有用到这个模型的表, 都会产生一个依赖关系. 比如 courses.Course
要引用这个 basemodel
的 id
, 其他表也会. 如果其他表里面也有 teacher
字段的话, 可能 basemodel
分不清这个 teacher
字段来自哪个表, 就冲突了.
当然只是一个猜测
1回答
-
bobby
2021-12-30
如果有时间的话建议看一下 https://docs.djangoproject.com/zh-hans/4.0/topics/db/models/#multi-table-inheritance 官方文档 也可以看看 https://stackoverflow.com/questions/34086729/django-1-9-field-clashes-with-the-field-of-non-existing-field-in-parent-model#
00
相似问题