解决 models.E006 错误

来源:7-9 通过migrate生成表和本章小结

duskash

2021-12-28

这一节很多人遇到 models.E006 错误, 我也遇到了, 查了些资料后解决该问题

简单来说, 这个错误就是字段名冲突导致的. 比如报错的第一条, 一般是 courses.Course.teacherusers.basemodel clashes. 这个 clashed 就是冲突的意思.

要解决这个冲突也很简单, 就是哪里冲突就改哪里的名字. 例如将 courses.Course 这个模型里的 teacher 字段改为 course_teacher 即可. 当然其他名字也可以, 方便自己开发就行.

但是造成这个错误的具体原因, 我还不是非常清楚. 因为看起来 users.basemodel 里面就只有 created_timeupdated_time 两个字段. 进到数据库里面看, 只是多一个 id 字段而已.

个人猜测是因为所有用到这个模型的表, 都会产生一个依赖关系. 比如 courses.Course 要引用这个 basemodelid, 其他表也会. 如果其他表里面也有 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#

0
0

Django+ xadmin 开发在线教育网站

一套通用的技术组合拳,助你解决大部分Python类网站后端问题

1911 学习 · 2149 问题

查看课程