2016-01-16 24 views
1

我有两个Django模型:Django的prefetch_related未能将数据传递到模板

class Product(models.Model): 
    name = models.CharField(max_length=80, null=True) 
    is_active = models.BooleanField(default=False, null=False) 

class Image(models.Model): 
    url = models.CharField(max_length=255, unique=True, null=False) 
    product = models.ForeignKey('Product', related_name='images') 

我有一组特定的产品。每个产品都有多个图像。最初的调用看起来是这样的:

product_list = product_list.filter(is_active=True).prefetch_related('images') 

的所属类别,然后根据所应用的过滤器被消减下来。

当我尝试在显示图层(模板)中使用product_list时,我迭代产品列表。我可以访问所有产品的字段,除了其图片。

{{product.images.0.id}} ==>空

{{product.images}} ==>返回Image.None

通过调试运行代码,我可以看到正在执行的Image SQL查询,只是没有数据被传递给模板。那里肯定有数据,因为我可以验证通过我的SQL客户端运行它的查询。有人知道为什么会发生这种情况吗?我如何访问给定产品的图像?

回答

0

我解决了我的问题。预取的数据必须如下访问:product.images.all.0.id