Django中的数据库表设计混乱
系统概述: 在我的系统中,客户端可以注册应用程序,然后客户端可以创建一个角色,并使用定义的角色创建用户。因此,一个客户端可以有多个用户 我已经创建了一个与用户相关的客户端模型Django中的数据库表设计混乱,django,database-design,django-models,Django,Database Design,Django Models,系统概述: 在我的系统中,客户端可以注册应用程序,然后客户端可以创建一个角色,并使用定义的角色创建用户。因此,一个客户端可以有多个用户 我已经创建了一个与用户相关的客户端模型 class Client(models.Model): user = models.OneToOneField(User) # True if the signed up user is client is_client = models.BooleanField(default=True)
class Client(models.Model):
user = models.OneToOneField(User)
# True if the signed up user is client
is_client = models.BooleanField(default=True)
# Which company the client represents
company = models.CharField(max_length=200, null=True)
# Address of the company
address = models.CharField(max_length=200, null=True)
但我认为这是一个错误的方法。因为当我想列出某些客户的用户时,我不能这样做。另外,我应该在哪里存储用户角色?我是否必须修改授权权限表。谢谢您需要为用户添加
ForeignKey()
关系,而不是OneToOne
。为此,您可以扩展django的User
模型,或者创建自己的用户配置文件类
要在用户
模型中扩展和添加属性,请参阅
如果您想使用django内置的
用户
模型和身份验证等,更好的方法是
OneToOne
与user
的关系创建用户配置文件模型Client
模型建立ForeignKey()
关系,因为您希望一个客户端有多个用户
类UserProfile(models.Model):
client=models.ForiegnKey('client')
UserProfile
实例user.get_profile()
方法为用户获取用户配置文件对象,但在1.5.1中,该方法已被弃用我想实施你的第二种方法。但是与其创建另一个模型
userProfile
,我就不能假设Client
是userProfile
@user2032220,你希望一个客户端有很多用户,那么你不能用Client
作为userProfile
好的,谢谢。但是如果我做了user=models.ForeignKey(user)
,就可以正确地完成,而不是OnetoOne
。