在django模板中获取相关模型字段

Get Related model fields in django template

我正在尝试获取产品,我想要与 Django 模板中的产品相同的图像。

型号

class Product(models.Model):
    title = models.CharField(blank=True,null=False,max_length=100)
    
class ProductImage(models.Model):
    product = models.ForeignKey(to='products.Product', on_delete=models.CASCADE, related_name='images', default=None)
    image = models.ImageField(upload_to='images/product_inmages', null=False, blank=False)
    def __str__(self):
        return self.product.title

如果您将 Product 中的 QuerySet 作为 products 传递给模板,您可以使用:

{% for product in products %}
    {% for image in product<b>.images.all</b> %}
        <img src="{{ image.image.url }}">
    {% endfor %}
{% endfor %}

您可以通过在模板中批量加载所有相关 ProductImage 来提高效率:

from django.shortcuts import render

def my_view(request):
    products = Product.objects<b>.prefetch_related('images')</b>
    return render(request, '<i>name-of-some-template.html</i>', {'products': products})