2012-01-29 66 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