0

系统总览:

在我的系统中,客户端可以注册应用程序,然后客户端可以创建角色并创建具有定义角色的用户。因此,一个客户端可以有多个用户。

我创建了一个与用户相关的客户端模型。

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表。谢谢

4

1 回答 1

0

您需要将ForeignKey()用户的关系添加到客户端而不是OneToOne. 为此,您可以扩展 django 的User模型或创建自己的用户配置文件类。

要在模型中扩展和添加属性User,请参阅扩展用户模型


如果你想使用 django 的内置User模型和身份验证等,更好的方法是......

  1. OneToOne在您的应用程序中创建与 有关系的用户配置文件模型User

  2. 在此用户配置文件模型中,添加有关用户和与其他模型的关系的特定信息。您可以在此类中设置角色并ForeignKey()Client模型建立关系,因为您希望一个客户端有多个用户。

    类 UserProfile(models.Model): client = models.ForiegnKey('Client') ...

  3. UserProfile每当创建新用户时为用户创建实例。

  4. 早些时候,django 有user.get_profile()方法来获取用户的用户配置文件对象,但在 1.5.1 中已弃用。

于 2013-09-30T07:27:21.940 回答