Django-此解决方案是DRY还是有更好的方法为这些概要文件类和子类建模?

问题描述

基本上,我有以下要求:

  • 用户具有个人用户个人资料
  • 组织可以拥有员工资料
  • 人员资料可以是独立的,也可以链接用户
  • 组织可以编辑人员资料,而无需更改用户的个人用户资料
  • 更改个人用户个人资料的用户不会影响该用户的组织人员个人资料
  • 用户可以是多个组织的员工(因此具有多个员工资料)
  • 用户不必是职员

当前我有以下课程 (为简单起见,删除了Irlelevant字段)

profiles.models.py

False

organisations.models.py

class Profile(TimeStampMixin):
   title    = models.CharField(max_length=6,choices=Title.choices,blank=True)
   forename = models.CharField(max_length=50,blank=True)
   surname  = models.CharField(max_length=50,blank=True)


class UserProfile(Profile):
   user = models.OnetoOneField(settings.AUTH_USER_MODEL,related_name="profile",on_delete=models.CASCADE)


class StaffProfile(Profile):
   user = models.ForeignKey(settings.AUTH_USER_MODEL,null=True,blank=True,db_index=True,related_name="staff_profiles")

我想知道的是,该解决方案是否为DRY,是否是满足需求的最佳方式?

我不确定的原因是因为我考虑过让 StaffProfile 扩展 UserProfile 而不是 Profile 并更改 UserProfile 中的OnetoOneField 更改为 ForeignKey 字段,但这似乎会使从其个人资料中查找用户的个人资料变得复杂。除非我通过通过函数设置 related_name 来更改 related_name ,以便在 UserProfile 中它等于“ profile”,在 StaffProfile 中>它等于“ staff_profiles”吗?但是,这是否只是工程过度?

由于人员资料不需要与之关联,这是对人员资料进行建模的最佳方法,还是以后有更好的方法用户链接至人员资料?例如。如果需要,还有另一个课程可以将用户链接到人员资料吗?我觉得这会再次增加复杂性/但过度设计...

如果您能对这个问题和我的解决方案给我个想法,我将不胜感激!

在此先感谢您的帮助,

GoingRoundInCircles

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)