在我的模型有類Book
和Category
這樣定義:不同的值
class Category(models.Model):
name = models.CharField()
class Book(models.Model):
title = models.CharField()
categories = models.ManyToManyField(Category)
我要的是一組是在categories
引用Category
實例給定查詢集Book
實例的字段。
我知道我可以通過書籍查詢集迭代和收集的類別爲每本書,但是這似乎沒有效率的我,因爲這可能在一個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的正確的路要走還是有更高水平的解決方案效率可比?
是,相當多的是,除了這本書的ID必須從一個查詢集 – Sergio
提取我想你的解決方案,它提供了我這個錯誤:'FieldError:無法解析關鍵字'book_set'到字段中。' – Sergio
@Sergio您應該能夠使用查詢集來代替列表。另外,我並不確定[反向關係](https://docs.djangoproject.com/en/1.3/ref/models/relations/)會被命名,因此您可能需要四處尋找才能找到。 – eric