环境:创建两个app,分别为teachers,students,models下有一样的属性,eg:性别,生日,名字等
如果在model导入的是AbstractUser,会报 (fields.E304)错误,错误如下图所示:
相似案例:django的数据库模型中的域多次引用同一个外键(表),该案例下是一个表
代码review,本案例继承的是AbstractUser,而不是User。
搜索同样问题:继承AbstracUser的304错误
文章提到在setting里添加 "AUTH_USER_MODEL = 'teachers.Teachers'"
但尝试之后发现依旧没有解决问题,重新思考二者关系,源码部分截图:
二者只是在emai字段上有区别,如果不需要定义email字段就用后者,但使用前者的时候可以将emai默认为空。
在使用二者的时候,无需在定义已有的字段。例如username,password,email 等,也可以继承下来修改一下属性(max_length等)。实际使用的时候个人还是水平低。在继承abstracuser,并在setting里添加AUTH_USER_MODEL = 'teachers.Teachers'后,可以使用,但两个以上的用户模型可能就不适用。或者采用另外的一种方式定义一个UserProfile(User)将共同属性放在该类里面。setting 无需在设置。
我有两个app, students,和teachers,teachers继承的abstractuser,然后students继承的teachers,students只要定义很少的信息即可。但对于有些无用的字段,需要继承abstraetuser方法,将之重写,令例如first_name=none,等
发现一个问题,具体原因没清楚:teachers(AbstractUsr),students(Teachers),学生表里没有例如username、等的属性,但是admin后台却可以添加,且学生表里面有个teachers_ptr