系统概述:
在我的系统中,客户端可以注册应用程序,然后客户端可以创建角色并使用定义的角色创建用户。因此,一个客户端可以拥有许多用户。
我创建了一个与用户相关的客户端模型。
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)
但我认为这是一种错误的做法。因为当我想列出某些客户的用户时,我不能这样做。另外,我应该在哪里存储用户角色?我是否必须修改 auth_permission 表。感谢
答案 0 :(得分:0)
您需要为用户添加ForeignKey()
关系而不是OneToOne
。为此,您可以扩展django的User
模型或创建自己的用户配置文件类。
要在User
模型中扩展和添加属性,请参阅Extending User model
如果你想使用django的内置User
模型和身份验证等,更好的方法是......
在您的应用中创建用户个人资料模型,与OneToOne
保持User
的关系。
在此用户个人资料模型中,添加有关用户的特定信息以及与其他模型的关系。您可以在此类中设置角色,并且与ForeignKey()
模型具有Client
关系,因为您希望客户拥有许多用户。
类UserProfile(models.Model): client = models.ForiegnKey('Client') ...
每当创建新用户时,为用户创建UserProfile
实例。
之前,django使用user.get_profile()
方法获取用户的用户个人资料对象,但在1.5.1中已弃用。