如何在Django中正确使用多用户模型?

麦克维尔弗雷德

美好的一天,我得到了以下模型,但我相信有一种更好的方法来实现自己的目标。我担心要扩展GeneralUser,但我并不是一个好主意。像现在正在扩展GeneralUser一样好,还是在我要引用它的所有模型中为GeneralUser创建一个外键会更好?

class GeneralUser(models.Model):
    user = models.ForeignKey(User, unique=True)
    profile_picture = models.ImageField()
    gender = models.CharField(max_length=1, choices=choices)
    country = models.CharField(max_length=50)
    province = models.CharField(max_length=50)
    city = models.CharField(max_length=50)
    street = models.CharField(max_length=50)
    contact_number = models.CharField(max_length=50)
    post_code = models.IntegerField(max_length=5)
    date_of_birth = models.DateField()


 class Administrator(GeneralUser):
    admin_id = models.CharField(max_length=50)


class Patient(GeneralUser):
    patient_id = models.CharField(max_length=10)


class Doctor(GeneralUser):
    doctor_id = models.CharField(max_length=10)


class Department(models.Model):
    doctor_id = models.ForeignKey(Doctor, related_name='doctor')

class Bill(models.Model):
    patient_id = models.ForeignKey(Patient, related_name='patient')


class Appointment(models.Model):
    patient_id = models.ForeignKey(Patient, related_name='patient')
    doctor_id = models.ForeignKey(Doctor, related_name='doctor')

class PatientRecord(models.Model):
    pass


class Contact(models.Model):
    full_name = models.CharField(max_length=80)
    email = models.EmailField(help_text='[email protected]')
    contact_number = models.CharField(max_length=14, help_text='+27 074 859 81 93')
    message = models.TextField(help_text='Please, type in your message')

对如何更好地设计表和关系有任何帮助或想法吗?

mtt2p

我觉得很适合!(OneToOneField类似于具有unique = True的ForeignKey)

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    force_password_change = models.BooleanField(default=False,editable=False)

class Distributor(UserProfile):
    company = models.CharField(max_length=50)
    street = models.CharField(max_length=60, blank=True, null=True)
    city = models.CharField(max_length=60, blank=True, null=True)
    zipcode = models.IntegerField(max_length=10, blank=True, null=True)
    country = models.CharField(max_length=60, blank=True, null=True)
    telephone = models.CharField(max_length=15, blank=True, null=True)
    url = models.CharField(max_length=50, blank=True, null=True)
    def __unicode__(self):
        return  '%s <%s>' % (self.user.username, self.company) 

class Customer(UserProfile):
    company = models.CharField(max_length=50)
    street = models.CharField(max_length=60, blank=True, null=True)
    city = models.CharField(max_length=60, blank=True, null=True)
    zipcode = models.IntegerField(max_length=10, blank=True, null=True)
    country = models.CharField(max_length=60, blank=True, null=True)
    telephone = models.CharField(max_length=15, blank=True, null=True)
    url = models.CharField(max_length=50, blank=True, null=True)
    limit = models.IntegerField(default = 0, blank=True, null=True , editable=False)
    distributor = models.ForeignKey(Distributor,blank=True,null=True)
    def __unicode__(self):
        return  ("%s <%s>" % (self.user.username, self.company))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在许多用户的Qt Creator项目设置中使用版本控制?

来自分类Dev

如何在多用户网站中使用准备好的陈述?

来自分类Dev

多用户模型Laravel JWT Auth

来自分类Dev

多用户访问时如何使用可变静态列表

来自分类Dev

如何设置此多用户PC?

来自分类Dev

如何添加更多用户?

来自分类Dev

如何创建多用户帐户

来自分类Dev

在多用户中使用localStorage

来自分类Dev

如何在Django模型中正确使用related_name来获取类名?

来自分类Dev

如何在模型中正确使用张量流功能

来自分类Dev

如何使用.NET从多用户环境中的Windows Service获取当前Windows用户名

来自分类Dev

在多用户应用中提交操作的正确方法

来自分类Dev

如何在Yii2中添加更多用户身份会话属性?

来自分类Dev

用例-如何在多用户系统中编写用例图?

来自分类Dev

如何在Windows OS上以多用户身份访问Ubuntu服务器上的Samba?

来自分类Dev

如何在同一html类中将文本附加到许多用户输入?

来自分类Dev

用例-如何在多用户系统中编写用例图?

来自分类Dev

如何在 Laravel 中为 1 个路由分配 2 个或更多用户角色?

来自分类Dev

在 Python Django 中使用一个帐户进行多用户身份验证?

来自分类Dev

如何使用Smack在多用户聊天消息中检索发件人姓名或其JID?

来自分类Dev

如何使用PhpStorm设置多用户单开发服务器工作流程

来自分类Dev

如何使用PhpStorm设置多用户单开发服务器工作流程

来自分类Dev

如何创建可供许多用户使用的数据库?

来自分类Dev

多用户登录codeigniter(如何使用password_verify方法?)

来自分类Dev

如何使用 JHipster UAA 处理更多用户信息(字段)

来自分类Dev

如何使用队列为 Azure Functions 设置多用户环境?

来自分类Dev

如何使用 Pushy 网络推送通知处理多用户场景?

来自分类Dev

使用fosuserBundle在symfony中使用多用户

来自分类Dev

如何在Django中正确使用auto_created属性?

Related 相关文章

  1. 1

    如何在许多用户的Qt Creator项目设置中使用版本控制?

  2. 2

    如何在多用户网站中使用准备好的陈述?

  3. 3

    多用户模型Laravel JWT Auth

  4. 4

    多用户访问时如何使用可变静态列表

  5. 5

    如何设置此多用户PC?

  6. 6

    如何添加更多用户?

  7. 7

    如何创建多用户帐户

  8. 8

    在多用户中使用localStorage

  9. 9

    如何在Django模型中正确使用related_name来获取类名?

  10. 10

    如何在模型中正确使用张量流功能

  11. 11

    如何使用.NET从多用户环境中的Windows Service获取当前Windows用户名

  12. 12

    在多用户应用中提交操作的正确方法

  13. 13

    如何在Yii2中添加更多用户身份会话属性?

  14. 14

    用例-如何在多用户系统中编写用例图?

  15. 15

    如何在Windows OS上以多用户身份访问Ubuntu服务器上的Samba?

  16. 16

    如何在同一html类中将文本附加到许多用户输入?

  17. 17

    用例-如何在多用户系统中编写用例图?

  18. 18

    如何在 Laravel 中为 1 个路由分配 2 个或更多用户角色?

  19. 19

    在 Python Django 中使用一个帐户进行多用户身份验证?

  20. 20

    如何使用Smack在多用户聊天消息中检索发件人姓名或其JID?

  21. 21

    如何使用PhpStorm设置多用户单开发服务器工作流程

  22. 22

    如何使用PhpStorm设置多用户单开发服务器工作流程

  23. 23

    如何创建可供许多用户使用的数据库?

  24. 24

    多用户登录codeigniter(如何使用password_verify方法?)

  25. 25

    如何使用 JHipster UAA 处理更多用户信息(字段)

  26. 26

    如何使用队列为 Azure Functions 设置多用户环境?

  27. 27

    如何使用 Pushy 网络推送通知处理多用户场景?

  28. 28

    使用fosuserBundle在symfony中使用多用户

  29. 29

    如何在Django中正确使用auto_created属性?

热门标签

归档