0

次の構造のカスタム プラグインがあります。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 %}

しかし、それは何もしません=(

前もって感謝します!

4

2 に答える 2

1

私はあなたが必要だと思います:

product.InstallationStep_set.all

InstallationStep モデル クラスに ForeignKey があるため、django は _set メソッドを参照先のクラスに配置します。

これは、django シェルで試すことができます。foo.bar を実行しようとしていて、foo に bar がない場合、テンプレートは黙って失敗します...

于 2012-10-03T09:58:50.673 に答える