我的django项目中有一些这样的模型:
class Product(models.Model):
name = models.Charfield(max_length=20)
available = models.BooleanField(default=True)
class Tea(Product):
image = models.ImageField(upload_to='products/tea')
class Coffee(Product):
image = models.ImageField(upload_to='products/coffee')
在ListView中,我有queryset,它为我提供5种可用产品:
Product.objects.filter(available=True)[:5]
在我的模板中,我想从Tea / Coffee渲染图像,如何从Product queryset访问Tea / Coffee子对象?
{% for product in products %}
{{ product.????.image.url }}
{% endfor %}
答案 0 :(得分:1)
我用django-model-utils包解决了这个问题。
更新父模型:
from model_utils.managers import InheritanceManager
class Product(models.Model):
...
objects = InheritanceManager()
我的查询集:
Product.objects.filter(available=True).select_subclasses()[:5]
现在我可以在子模型的模板属性中使用
{% for product in products %}
{{ product.image.url }}
{% endfor %}