使用Django-Polymorphic模型生成HTML
问题描述:
我可以基于DJANGO-POLYMORPHIC模型动态生成HTML吗?我想读取表中的所有行并根据类的类型生成div。或者这是不好的做法?使用Django-Polymorphic模型生成HTML
{% if content %}
{% for c in content %}
<ul>
{% if c.instance_of(Text) %}
<li>TEXT</li>
{% endif %}
{% if c.instance_of(Image) %}
<li>IMAGE</li>
{% endif %}
</ul>
{% endfor %}
{% else %}
<p>No content available.</p>
{% endif %}
答
我不愿意这样编码。
首先,你需要通过Text
和Image
在你的情况下,也不管you can't call a function in a template with parameters.
我倾向于要么编写模板标签和过滤器,或更好的,只是一个属性添加到类返回的“一事一议”的类型,你,你可以直接置于<li></li>
class Foo(PolymorphicModel):
def description(self):
return self.__class__.__name__
而且......
<ul>
{% for c in content %}
<li>c.description</li>
{% endfor %}
</ul>
如果c.description中的'TextContent'elif'ImageContent'在c.description中有什么想法? – AK47
我有点想保持干爽,你的描述将被封装在课堂上的一个地方。然后你可以在其他页面中使用它,并且不需要将类名翻译成一些好的描述...'description()'甚至可以是每个子类的静态字符串,而不是'self .__ class__。 __name__' – rrauenza