Django 中对象子集的 ManyToManyField 中的不同值
在我的模型中,我的类 Book
和 Category
定义如下:
class Category(models.Model):
name = models.CharField()
class Book(models.Model):
title = models.CharField()
categories = models.ManyToManyField(Category)
我想要的是 Category
实例中引用的一组 Category
实例。给定 Book
实例查询集的 code>categories 字段。
我意识到我可以迭代书籍的查询集并收集每本书的类别,但这对我来说似乎效率低下,因为这可以在单个 SQL 查询中说明:
SELECT DISTINCT name
FROM myapp_book_categorys JOIN myapp_category ON myapp_book_categorys.category_id=myapp_category.id
WHERE myapp_book_categorys.book_id IN
(SELECT id FROM myapp_book WHERE ...);
原始 SQL 是正确的方法还是有更高级别的解决方案效率可比吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
编辑:好的,我没有 ManyToManyField 之前进行测试,所以我猜测。新代码!
Edit: Okay, I didn't have a ManyToManyField to test on before so I was guessing. New code!
您需要按“书籍”字段进行过滤:
You need to filter by the 'book' field: