django扩展用户模型对不同类型的用户模型定义
我使用的是python2.7 + django1.7.5,现在编写的网站的用户模型包括学生和教师两种类型,我想采用官方1.7文档中对用户模型的扩展
因为学生和教师都有一些通用的字段,我想了三种编写方式:
1)第一种
class CommonUserProfile(models.Model)
user = models.OneToOneField(User)
#通用的用户信息(profile)
class Teacher(models.Model):
common_user = models.OneToOneField(CommonUserProfile)
#教师独有的用户信息
class Student(models.Model):
common_user = models.OneToOneField(CommonUserProfile)
#学生独有的用户信息
2)第二种
class CommonUserProfile(models.Model)
#通用的用户信息(profile)
class Teacher(models.Model):
user = models.OneToOneField(User)
common_user = models.OneToOneField(CommonUserProfile)
#教师独有的用户信息
class Student(models.Model):
user = models.OneToOneField(User)
common_user = models.OneToOneField(CommonUserProfile)
#学生独有的用户信息
3)第三种
class CommonUserProfile(models.Model)
user = models.OneToOneField(User)
#通用的用户信息(profile)
class Teacher(models.Model):
user = models.OneToOneField(User)
#教师独有的用户信息
class Student(models.Model):
user = models.OneToOneField(User)
#学生独有的用户信息
请问以上三种方式哪种比较好呢?望高手们赐教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
参见:https://simpleisbetterthancom...
该文章解决了我的问题。
文章提供了一个比较好的流程图,供开发者选择不同的用户模型:
我当时需要两种用户,所以选择用一个布尔值来区分,对于相同的属性,存user model里,对于不同的属性,构建新表,通过一对一映射,来表示某种用户的额外属性。