django扩展用户模型对不同类型的用户模型定义

发布于 2022-09-01 07:40:29 字数 1304 浏览 41 评论 0

我使用的是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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

永言不败 2022-09-08 07:40:29

参见:https://simpleisbetterthancom...

该文章解决了我的问题。

文章提供了一个比较好的流程图,供开发者选择不同的用户模型:

image.png

我当时需要两种用户,所以选择用一个布尔值来区分,对于相同的属性,存user model里,对于不同的属性,构建新表,通过一对一映射,来表示某种用户的额外属性。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文