我对如何构建我的django模型存在问题。
我有用户模型和帐户模型。
用户可以在多个帐户中。每个用户都应拥有每个帐户的密钥。
我希望能够获得与帐户和用户组合相关联的密钥。
用户1在帐户A和B中。如果我查询帐户A和用户1,我应该得到key1,如果我查询B和1,我应该得到key2。
keys = {AccountA:key1,AccountB:key2}
我对如何存储这些数据感到困惑。我知道我可以序列化json并存储为文本字段。但我认为这将是混乱的。我希望能够在需要时重新生成密钥。什么是
class User(models.Model):
accounts= models.ManyToManyField(Account)
keys = models.TextField()
OR
class User(models.Model):
accounts= models.ManyToManyField(Account)
keys = models.ManyToManyField(AnotherModel?)
还有别的吗?警告:我不能使用hstore或jsonfield。我在django 1.7
答案 0 :(得分:0)
您需要的是与数据库规范化有关。我建议阅读更多有关该主题的内容。现在回到具体的例子。
如果每个用户 - 帐户组合都是唯一的,我会设置多对多关系。
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实例来简化所有密钥。