从查询集中获取唯一的多对多记录列表
Posted
技术标签:
【中文标题】从查询集中获取唯一的多对多记录列表【英文标题】:Get list of Unique many-to-many records from a queryset 【发布时间】:2011-03-01 11:33:28 【问题描述】:我的模型:
class Order(models.Model):
ordered_by = models.ForeignKey(User)
reasons = models.ManyToManyField(Reason)
class Reason(models.Model):
description = models.CharField()
基本上,用户创建一个订单并给出该订单的原因。即,john 有两个订单(一个是铅笔订单,因为他不在,另一个是因为他不喜欢他目前的库存。第二个订单是钢笔,因为他不在了)。
我想打印一份用户下订单的所有原因的列表。所以在 john 下,应该打印“he is out”、“he doesn't like his current stock”;只有这两行。如果我简单地选择 john 的所有订单,遍历它们并打印出他们的“原因”,它会打印“he is out”、“he doesn't like his current stock”,然后再次打印“he is out”。我不想要这些重复的值。
如何选择他所有订单的原因列表,以便该列表包含所有唯一行?
【问题讨论】:
【参考方案1】:Reason.objects.filter(order__ordered_by=john).distinct()
【讨论】:
以上是关于从查询集中获取唯一的多对多记录列表的主要内容,如果未能解决你的问题,请参考以下文章
从所有记录中获取所有相关的多对多,而不是从每个记录 laravel