【问题标题】:Django prefetch_related failing to pass data to templateDjango prefetch_related 无法将数据传递给模板
【发布时间】:2016-04-22 06:05:14
【问题描述】:

我有两个 Django 模型:

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_list 时,我会迭代产品列表。我可以访问产品的所有字段除了它的图片。

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

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

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

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-27
      • 2017-12-31
      • 2012-10-09
      • 1970-01-01
      • 2010-12-26
      • 2017-07-25
      • 2018-12-26
      • 1970-01-01
      相关资源
      最近更新 更多