Database Django模型:如何表达以下逻辑。。。?
我在模式方面遇到了困难,我需要以下逻辑方面的帮助 我有一个表Database Django模型:如何表达以下逻辑。。。?,database,django,django-models,many-to-many,one-to-many,Database,Django,Django Models,Many To Many,One To Many,我在模式方面遇到了困难,我需要以下逻辑方面的帮助 我有一个表客户端和一个表权限。表Client表示具有某些属性的客户端,表Rights表示每个客户端的可用权限 因此,我想为客户机分配一个可用权限列表(每个用户可以拥有不同的权限,但所有权限都来自表rights),如何在模型中实现 之后,我如何为客户检索分配给他的权限 客户 权利 提前谢谢 只需在客户端模型中使用一个字段即可。毕竟,这是一种多对多的关系 如果每个权限对每个客户机都是唯一的,则使用权限到客户机的ForeignKey。只需在客户机模型中
客户端
和一个表权限
。表Client
表示具有某些属性的客户端,表Rights
表示每个客户端的可用权限
因此,我想为客户机分配一个可用权限列表(每个用户可以拥有不同的权限,但所有权限都来自表rights
),如何在模型中实现
之后,我如何为客户
检索分配给他的权限
客户
权利
提前谢谢 只需在客户端模型中使用一个字段即可。毕竟,这是一种多对多的关系
如果每个权限对每个客户机都是唯一的,则使用权限到客户机的ForeignKey。只需在客户机模型中使用一个字段即可。毕竟,这是一种多对多的关系
如果每个权限对每个客户端都是唯一的,则使用权限到客户端的ForeignKey。使用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()
使用多个字段
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()
乔治,对不起,我没有足够的因果报应来直接回复你的评论
Question: The rights = c.rights.all() will be instance of Rights or instance of the Client?
->权限
实例
所有链接到
客户端
对象的权限
实例。Jorge,对不起,我没有足够的业力直接回复您的评论
Question: The rights = c.rights.all() will be instance of Rights or instance of the Client?
->权限
实例
所有链接到
客户端的权限
实例。问题:权限=c.Rights.All()
将是权限的实例
或客户端的实例
?权限
将是一个查询集,并将告诉您分配给客户端c
的所有权限c
是客户端的一个实例。问题:rights=c.rights.all()
将是rights
的实例,或者Client
的实例?rights
将是一个查询集,并将告诉您分配给客户端c
的所有权限c
是客户端的一个实例。我对它进行了一些测试,发现它既不能识别为Right
也不能识别为Client
,而是识别为django.db.models.query.QuerySet
。示例:isinstance(,django.db.models.query.QuerySet)
给出了True
是的它是一个包含权限实例的QuerySetprint rights[0]
我对它进行了一些测试,发现它既不能识别为Right
也不能识别为Client
,而是识别为django.db.models.query.QuerySet
。示例:isinstance(,django.db.models.query.QuerySet)
给出了True
是的它是一个包含权限实例的QuerySet<代码>打印权限[0]