2016-06-07 38 views
0

我可以基於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 %} 

回答

1

我不願意這樣編碼。

首先,你需要通過TextImage在你的情況下,也不管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> 
+0

如果c.description中的'TextContent'elif'ImageContent'在c.description中有什麼想法? – AK47

+0

我有點想保持乾爽,你的描述將被封裝在課堂上的一個地方。然後你可以在其他頁面中使用它,並且不需要將類名翻譯成一些好的描述...'description()'甚至可以是每個子類的靜態字符串,而不是'self .__ class__。 __name__' – rrauenza