django - 如何在多对多关系中获得独特的孩子?
问题描述
我需要列出有书籍的流派。多本书可以有相同的流派,但列表不应有重复。
class Genre(models.Model):
name = models.CharField(max_length=200, help_text='Enter a book genre (e.g. Science Fiction)')
class Book(models.Model):
genre = models.ManyToManyField(Genre, help_text='Select a genre for this book')
解决方案
您可以获得至少与以下内容相关Genre
的s列表: Book
Genre.objects.filter(book__isnull=False).distinct()
此处是必需的.distinct()
,否则您将在查询集中获得Genre
,每个相关Book
。
Django 将为此构造一个查询,如下所示:
SELECT DISTINCT genre.*
FROM genre INNER JOIN book_genre ON genre.id = book_genre.genre_id
WHERE book_genre.book_id IS NOT NULL
推荐阅读
- android - Base.Widget.Design.TabLayout 不能作为 android 中 style.xml 中的父级
- c++ - 在c ++ stl map中,删除具有重复值的条目
- javascript - 用 combineLatest 匹配两个 Observable 数据对象
- webpack - webpack 4.5 设置代理公司
- javascript - 多人游戏 NodeJS、HTML、JS - 服务器/客户端验证
- c# - 实体类型“Microsoft.AspNetCore.Identity.IdentityRole”处于阴影状态
- reactjs - 如何使用 Jenkins Blue Ocean 测试反应应用程序?
- javascript - 在 ember 中出现未捕获的错误
- c# - odata 格式 xml 或 json 不起作用
- angular - 在Angular 5中使用无组件路由路由到子节点时的意外行为