2012-01-29 89 views
4

使用select_related時,有沒有人開發出一種方法來過濾外鍵表中的字段。Django Filter Select_Related

例如考慮到這些機型:

class Author(models.Model): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=40) 

class AuthorExtra(models.Model): 
    author = models.ForeignKey(Author) 
    type = models.ForeignKey(ExtraType) 
    value = models.CharField(max_length = 24) 

我想一個方法來緩存所有特定類型的相關AuthorExtra對象。

回答

7

您不能使用select_related來做到這一點,因爲它只適用於One-to-One字段或ForeignKeys。對於這樣的反向關係,開發版本已經引入了prefetch_related,這正是您要找的。

https://docs.djangoproject.com/en/dev/ref/models/querysets/#prefetch-related

+1

謝謝。看起來這個星期會有1.4測試版,所以也許我會升級。它看起來不像文檔,有一個內置的實現來過濾預取的記錄。 – AgDude 2012-02-01 02:57:23