从查询集中获取唯一的多对多记录列表

时间:2010-06-09 03:20:08

标签: django django-models django-templates

我的模特:

class Order(models.Model):
    ordered_by = models.ForeignKey(User)
    reasons = models.ManyToManyField(Reason)
class Reason(models.Model):
    description = models.CharField()

用户基本上会创建订单并说明订单的原因。也就是说,约翰有两个订单(一个用于铅笔,因为他不在,因为他不喜欢他现在的股票。因为他已经出局所以第二笔订购钢笔。)

我想打印出用户下订单的所有原因列表。所以在约翰之下,它应该打印出“他出去了”,“他不喜欢他现在的股票”;那两条线。如果我只是简单地选择约翰的所有命令,重复它们并打印出他们的“理由”它将打印出“他已经出局”,“他不喜欢他现在的股票”然后“他又出局”了。我不想要这些重复的值。

如何选择所有订单的原因列表,以便列表包含所有唯一的行?

1 个答案:

答案 0 :(得分:12)

Reason.objects.filter(order__ordered_by=john).distinct()