如何将 ManyToManyField 与另一个 ManyToManyField 进行比较
How to Compare ManyToManyField to another ManyToManyField
我有一个模型Partner
class Partner(models.Model):
name = models.CharField(max_length=100, blank=True, null=True)
group = models.OneToOneField(
Group, on_delete=models.DO_NOTHING, blank=True, null=True)
def __str__(self):
return self.name
我还有 2 个其他模型,一个是 CustomUser,另一个是 Quote
class CustomUser(AbstractUser):
#...
name = models.CharField(max_length=160, null=True, blank=True)
partner = models.ManyToManyField(
Partner, blank=True)
class Quote(models.Model):
#...
visibility = models.CharField(max_length=10)
partner = models.ManyToManyField(
Partner, blank=True)
两者都有一个与 ManyToManyField 相关的合作伙伴字段到合作伙伴模型
现在我想在以下视图中比较它们:
合作伙伴字段可以有多个合作伙伴,如合作伙伴 1、合作伙伴 2、合作伙伴 3
如何在 Quote 和 CustomUser 模型中找到相互匹配的合作伙伴
可以说,其中一个报价对象在 ManyToManyField 中设置了 [partner1 和 partner6],我只想让在其合作伙伴 ManyToManyField 中也有 partner1 和 partner6 的用户访问该报价。
那么我该如何筛选和比较它们呢?
我也阅读了文档,但无法重现该解决方案。帮助将不胜感激。
编辑:我可以稍微解释一下,假设从报价中的整组合作伙伴说起,如果即使一个合作伙伴与一组合作伙伴匹配到 CustomUser,那么 CustomUser 也应该可以访问它。
您可以 .filter(…)
[Django-doc] 使用:
Quote.objects.filter(<b>partner__customuser=<i>my_user</i></b>)
这将 return QuerySet
个 Quote
至少 个 Partner
与 my_user
.
相同的 Quote
将被 return 编辑多次,因为有 Partner
是共同的。您可以使用 .distinct()
[Django-doc] 来避免这种情况:
Quote.objects.filter(<b>partner__customuser=<i>my_user</i></b>)<b>.distinct()</b>
我有一个模型Partner
class Partner(models.Model):
name = models.CharField(max_length=100, blank=True, null=True)
group = models.OneToOneField(
Group, on_delete=models.DO_NOTHING, blank=True, null=True)
def __str__(self):
return self.name
我还有 2 个其他模型,一个是 CustomUser,另一个是 Quote
class CustomUser(AbstractUser):
#...
name = models.CharField(max_length=160, null=True, blank=True)
partner = models.ManyToManyField(
Partner, blank=True)
class Quote(models.Model):
#...
visibility = models.CharField(max_length=10)
partner = models.ManyToManyField(
Partner, blank=True)
两者都有一个与 ManyToManyField 相关的合作伙伴字段到合作伙伴模型
现在我想在以下视图中比较它们: 合作伙伴字段可以有多个合作伙伴,如合作伙伴 1、合作伙伴 2、合作伙伴 3
如何在 Quote 和 CustomUser 模型中找到相互匹配的合作伙伴
可以说,其中一个报价对象在 ManyToManyField 中设置了 [partner1 和 partner6],我只想让在其合作伙伴 ManyToManyField 中也有 partner1 和 partner6 的用户访问该报价。
那么我该如何筛选和比较它们呢? 我也阅读了文档,但无法重现该解决方案。帮助将不胜感激。
编辑:我可以稍微解释一下,假设从报价中的整组合作伙伴说起,如果即使一个合作伙伴与一组合作伙伴匹配到 CustomUser,那么 CustomUser 也应该可以访问它。
您可以 .filter(…)
[Django-doc] 使用:
Quote.objects.filter(<b>partner__customuser=<i>my_user</i></b>)
这将 return QuerySet
个 Quote
至少 个 Partner
与 my_user
.
相同的 Quote
将被 return 编辑多次,因为有 Partner
是共同的。您可以使用 .distinct()
[Django-doc] 来避免这种情况:
Quote.objects.filter(<b>partner__customuser=<i>my_user</i></b>)<b>.distinct()</b>