代码之家  ›  专栏  ›  技术社区  ›  rsp

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

  •  8
  • rsp  · 技术社区  · 16 年前

    我的模型:

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

    基本上,用户创建一个订单并给出该订单的原因。约翰有两份订单(一份是铅笔,因为他不在,而且他不喜欢现在的存货)。因为他不在家,所以第二次定购钢笔。

    我想打印出一个用户下订单的所有原因的列表。所以在约翰的领导下,应该印上“他不在”,“他不喜欢他的股票”;这两行只有。如果我简单地选择John的所有订单,反复查看它们并打印出它们的“原因”,它将打印出“他不在”、“他不喜欢他的当前库存”,然后再次打印出“他不在”。我不想要这些重复的值。

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

    1 回复  |  直到 16 年前
        1
  •  12
  •   Zach    16 年前
    Reason.objects.filter(order__ordered_by=john).distinct()
    
    推荐文章