Django prefetch_related 无法将数据传递给模板

标签 django django-templates

我有两个 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 客户端运行它的查询。有谁知道为什么会这样?如何访问给定产品的图像?

最佳答案

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

关于Django prefetch_related 无法将数据传递给模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34831511/

相关文章:

python - 使用设置目录时,我应该将其导入到哪里?

python - 如何避免 django 模板中的过多查询?

django - 等效于 Django 模板中的 python "for in"循环

django - Django 中的范围 slider

python - 有没有办法在 django 模板中包含多个 javascript 文件?

python - 是否可以在 Heroku dynos 上刷新内存?

django - 在 Django 2.0 中按字段值排序

python - 如何计算全局覆盖率?

python - 在 Django 管理站点中,如何通过内联访问模型属性?

python - 链接 `if` 和 `url` 模板标签