Python 如何构造具有唯一关键帐户用户组合的多对多django模型
我对如何构造django模型有一个问题 我有一个用户模型和一个帐户模型 用户可以在多个帐户中。每个用户都应该拥有每个帐户的密钥 我希望能够获得与帐户和用户组合相关联的密钥 用户1在帐户A和B中。如果我查询帐户A和用户1,我应该得到键1,如果我查询B和1,我应该得到键2 keys={AccountA:key1,AccountB:key2} 我只是对如何存储这些数据感到困惑。我知道我可以序列化json并存储为文本字段。但我认为那会很混乱。如果需要,我希望能够重新生成密钥。问题是什么Python 如何构造具有唯一关键帐户用户组合的多对多django模型,python,django,django-models,Python,Django,Django Models,我对如何构造django模型有一个问题 我有一个用户模型和一个帐户模型 用户可以在多个帐户中。每个用户都应该拥有每个帐户的密钥 我希望能够获得与帐户和用户组合相关联的密钥 用户1在帐户A和B中。如果我查询帐户A和用户1,我应该得到键1,如果我查询B和1,我应该得到键2 keys={AccountA:key1,AccountB:key2} 我只是对如何存储这些数据感到困惑。我知道我可以序列化json并存储为文本字段。但我认为那会很混乱。如果需要,我希望能够重新生成密钥。问题是什么 class Us
class User(models.Model):
accounts= models.ManyToManyField(Account)
keys = models.TextField()
或
还有别的吗?注意事项:我不能使用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实例来简单地获得所有密钥。密钥是什么,它与数据模型的关系如何?密钥是uuid。是的,但是密钥的用途是什么?我是说它是怎么用的。这是一个可以授予任何权限的密钥吗?是的,它会授予用户对所连接的每个帐户的权限。最后一个问题。每个用户帐户组合都有一个密钥还是一个密钥与一个帐户相关?
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()