Python 通过Expando迭代';Django模板中的动态属性
我试图遍历Expando模型的动态属性,以便将它们全部输出。除了创建自己的方法之外,还有其他方法可以做到这一点吗Python 通过Expando迭代';Django模板中的动态属性,python,google-app-engine,templates,iteration,expando,Python,Google App Engine,Templates,Iteration,Expando,我试图遍历Expando模型的动态属性,以便将它们全部输出。除了创建自己的方法之外,还有其他方法可以做到这一点吗 class Event(db.Expando): platform = db.ReferenceProperty(Platform) date = db.DateTimeProperty() def getValues(self): return self._dynamic_properties 然后在模板中,传递一个“平台”对象: {%
class Event(db.Expando):
platform = db.ReferenceProperty(Platform)
date = db.DateTimeProperty()
def getValues(self):
return self._dynamic_properties
然后在模板中,传递一个“平台”对象:
{% for event in platform.event_set %}
<b>{{ event.date }}</b><br />
{% for pair in event.getValues.items %}
{{ pair.0 }} = {{ pair.1 }}<br />
{% endfor %}
{% endfor %}
{platform.event_set%中的事件的%
{{event.date}}
{event.getValues.items%}
{{pair.0}}={{pair.1}}
{%endfor%}
{%endfor%}
这是可行的,但我很惊讶我不能这么做:
{% for event in platform.event_set %}
<b>{{ event.date }}</b><br />
{% for pair in event.items %}
{{ pair.0 }} = {{ pair.1 }}<br />
{% endfor %}
{% endfor %}
{platform.event_set%中的事件的%
{{event.date}}
{event.items%%中的配对为%1}
{{pair.0}}={{pair.1}}
{%endfor%}
{%endfor%}
没有我自己的方法调用。。。我是否应该使用“.items”以外的内容?您可以使用db.Model的“dynamic_properties”方法检索Expando的属性,格式与“properties”方法相同(如文档所示) 请记住,这些函数不会返回属性的值,但是…'properties'返回映射到其实现类(在本例中为db.ReferenceProperty和db.DateTimeProperty)的属性名称字典,“dynamic_properties”仅返回属性名称列表,因为Expandos无法将动态值映射到实现类 为了获得属性的值,必须使用
getattr(model,prop\u name)
。没有办法纯粹在Django模板内运行此函数(没有),但是您可以像这样保留并重新编写您的方法
def getExpandoValues(self):
return dict((name, getattr(self, name)) for name, impl_class in self.dynamic_properties())
。。。然后重新编写模板,通过新的字典输入访问值:
{% for event in platform.event_set %}
<b>{{ event.date }}</b><br />
{% for pair in event.getExpandoValues %}
{{ pair.0 }} = {{ pair.1 }}<br />
{% endfor %}
{% endfor %}
{platform.event_set%中的事件的%
{{event.date}}
{event.getExpandoValues%中的对为%1}
{{pair.0}}={{pair.1}}
{%endfor%}
{%endfor%}
事件中对的{%for.\u dynamic\u properties.items%}不起作用吗?否;有人提出了这一建议,但答案已被撤回。无法访问以下划线开头的属性。为这个建议干杯。