次の構造のカスタム プラグインがあります。models.py は次のようになります
class ProductDescription(models.Model):
name = models.CharField(max_length=30)
icon = models.ImageField(upload_to="installation_image", blank=True, null=True)
description = models.TextField(blank=True, null=True)
def __unicode__(self):
return self.name
class ProductPlugin(CMSPlugin):
product = models.ForeignKey(ProductDescription)
class ProductSpecification(models.Model):
product = models.ForeignKey(ProductDescription)
specification = models.TextField(blank=True, null=True)
class InstallationStep(models.Model):
product = models.ForeignKey(ProductDescription)
step = models.TextField(blank=True, null=True)
image = models.ImageField(upload_to="installation_image", blank=True, null=True)
admin.py
class InstallationStepInline(admin.StackedInline):
model = InstallationStep
extra = 0
class ProductSpecificationInline(admin.StackedInline):
model = ProductSpecification
extra = 0
class DeviceAdmin(admin.ModelAdmin):
inlines = [ProductSpecificationInline ,
InstallationStepInline]
admin.site.register(ProductDescription, DeviceAdmin)
および cms_plugin.py
class CMSProductPlugin(CMSPluginBase):
model = ProductPlugin
name = _("Product Description")
render_template = "product_description.html"
def render(self, context, instance, placeholder):
context.update({
'product':instance.product,
'object':instance,
'placeholder':placeholder
})
return context
plugin_pool.register_plugin(CMSProductPlugin)
そのため、各製品には、仕様とインストール手順がまったくないか、複数ある可能性があります。そして問題は、これらの仕様と手順をテンプレートでどのようにレンダリングできるかということです。ProductDescription クラスのデータを取得する方法を知っています。のようです
<div class="test">{{ product.description }}</div>
しかし、どうすれば他のデータを抽出できますか? 私はそれが次のようなものであるべきだと思います
{% for steps in product.InstallationStep.all %}
<div class="test">{{ steps.step }}</div>
{% endfor %}
しかし、それは何もしません=(
前もって感謝します!