Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何构造具有唯一关键帐户用户组合的多对多django模型_Python_Django_Django Models - Fatal编程技术网

Python 如何构造具有唯一关键帐户用户组合的多对多django模型

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

我对如何构造django模型有一个问题

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

用户可以在多个帐户中。每个用户都应该拥有每个帐户的密钥

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

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

keys={AccountA:key1,AccountB:key2}

我只是对如何存储这些数据感到困惑。我知道我可以序列化json并存储为文本字段。但我认为那会很混乱。如果需要,我希望能够重新生成密钥。问题是什么

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()