【问题标题】:Retrieving unique values from queryset in Django?从 Django 中的查询集中检索唯一值?
【发布时间】:2019-09-28 09:08:16
【问题描述】:

我有一个相当简单的问题。

我有三个模型:

class Author(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()

class Publisher(models.Model):
    name = models.CharField(max_length=300)

class Book(models.Model):
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)

用户可以过滤书籍并为“Publisher-A”选择一个过滤器。现在我想更新显示的作者过滤器 - 不显示所有作者 - 但只显示与所选出版商出版书籍的那些。所以我想我需要从查询集中检索唯一作者列表。

I found this post - 但对我来说这似乎是一个黑客行为。没有标准的解决方案吗?这个问题看起来很简单。

谢谢。

【问题讨论】:

    标签: django django-queryset


    【解决方案1】:

    您可以通过以下方式获取给定PublisherAuthors 列表:

    Author.objects.filter(<b>book__publisher=<i>my_publisher</i></b>).distinct()

    my_publisher 是发布者。 .distinct() 将保证 Author 在查询集中最多出现一次。如果Authormy_publisher 写了多本书,这是必要的。如果您省略 .distinct(),它将出现多次:恰好是 Author 为该出版商写书的次数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 2012-11-26
      • 2020-11-11
      • 2012-06-01
      • 2019-07-01
      • 2018-09-10
      • 1970-01-01
      • 2017-08-23
      相关资源
      最近更新 更多