繁体   English   中英

Django模型继承:从父查询集访问子对象

[英]Django model inheritance: access to child object from parent queryset

我的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 %}

我用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 %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM