我对如何构建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实例来简单地获得所有键。