如何通过独特的关键帐户用户组合来构建许多Django模型



我对如何构建Django型号有问题。

我有一个用户模型和帐户模型。

用户可以在多个帐户中。每个用户都应为每个帐户都有一个密钥。

我希望能够获得与帐户和用户组合关联的密钥。

用户1在帐户A和B中。如果我查询帐户A和用户1,我应该获取键1,如果我查询b和1,我应该得到key2。

键= {accounta:key1,accountb:key2}

我只是对如何存储这些数据感到困惑。我知道我可以将JSON序列化并存储为文本字段。但是我认为那会凌乱。我希望在需要时能够再生钥匙。什么是

class User(models.Model):
    accounts= models.ManyToManyField(Account)
    keys = models.TextField()

class User(models.Model):
    accounts= models.ManyToManyField(Account)
    keys = models.ManyToManyField(AnotherModel?)

还有其他吗?警告:我不能使用Hstore或Jsonfield。我在Django 1.7

您需要的内容与数据库归一化有关。我建议阅读有关该主题的更多信息。现在返回具体示例。

如果每个用户估计组合都是唯一的,我将通过关系建立一个多对多的关系。

class User(models.Model):
    accounts= models.ManyToManyField(Account, 
                                     through='UserAccount',
                                     related_name='user_accounts',
    )
class UserAccount(models.Model):
    user = models.ForeignKey(Account, on_delete=models.CASCADE)
    account = models.ForeignKey(User, on_delete=models.CASCADE)
    key = models.UUIDField()

之后,您可以通过选择与混凝土用户相关的所有UserAccount实例来简单地获得所有键。