我在架构上面临困难,我需要帮助以下逻辑。
我有一张表Client
和一张表Rights
。表Client
表示具有某些属性的客户端,表Rights
表示每个客户端的可用权限。
所以,我想为客户分配可用权限列表(每个用户可以拥有不同的权限,但所有权限都来自表Rights
),我该如何在模型中完成?
之后如何检索分配给他的Client
Rights
?
name = models.CharField(max_length=256)
user = models.ForeignKey(User)
bio = models.TextField(null=True, blank=True)
website = models.URLField(null=True)
key = models.CharField(unique=True, max_length=255, db_index=True)
title = models.CharField(max_length=100, blank=True)
description = models.TextField(blank=True)
提前致谢!
答案 0 :(得分:1)
只需在客户端模型中使用ManyToMany字段即可。毕竟,这是一种多对多的关系。
如果每个权限对每个客户端都是唯一的,那么请使用从权限到客户端的ForeignKey。
答案 1 :(得分:1)
使用ManyToManyField
class Rights(models.Model):
key = models.CharField(unique=True, max_length=255, db_index=True)
title = models.CharField(max_length=100, blank=True)
description = models.TextField(blank=True)
class Client(models.Model):
name = models.CharField(max_length=256)
user = models.ForeignKey(User)
bio = models.TextField(null=True, blank=True)
website = models.URLField(null=True)
rights = models.ManyToManyField(Rights)
您可以使用
获取客户的所有权利c = Client.objects.get(id=1)
rights = c.rights.all()
答案 2 :(得分:1)
Question: The rights = c.rights.all() will be instance of Rights or instance of the Client?
- > Rights
个实例。
所有Rights
个实例都链接到Client
对象。