gpt4 book ai didi

python - Django:将用户模型或配置文件模型用于相关模型

转载 作者:行者123 更新时间:2023-12-01 02:54:10 26 4
gpt4 key购买 nike

这里的一般问题(更具体地针对 Django/Python),例如,当创建诸如 Company 之类的模型时,并且多个用户(员工)将与此类模型相关,应该如何处理不同型号有关联吗?

即用户配置文件将通过 OneToOneField 与用户对象相关。但是,Company 对象是否应该通过ForeignKey 与User 对象或UserProfile 对象相关联,为什么这是合适的方式呢?

所以

class UserProfile(models.Model): # For the Company Employees
user = models.OneToOneField(UserModel, related_name='employeeprofilemodel', on_delete=models.CASCADE, blank=True,
null=True)
...
company_rel = models.ForeignKey(CompanyModel, related_name='companyrel', null=True)

class User(AbstractBaseUser): # For all Users
...
company_rel = models.ForeignKey(CompanyModel, related_name='companyrel', null=True)

最佳答案

这更多的是一个基于意见的问题,而不是技术问题。我推荐前一种方式,即与 AUTH_USER_MODEL 创建一对一关系。然后,您可以将员工相关数据存储在用户配置文件表中,该表可以通过外键关系与公司表相关联。这种数据库模式的优点是,您可以在将来(当然,如果需要的话)更改用户表(即 AUTH_USER_MODEL ),而不会影响本质上可能敏感的员工详细信息。用户表独立于数据库中的公司表,可用于授权。此外,数据库查询期间携带的数据较少,并且可以隐式实现小级别的优化。我认为这比从 auth.User 模型扩展更合适。

每当需要数据库重构时,后一种方式可能会损害上述敏感数据。此外,当用户模型拥有的用户数据多于所需数据时,查询会更加繁重。使用用户表处理数据库查询时可能需要额外注意优化。

关于python - Django:将用户模型或配置文件模型用于相关模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44394888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com