比较App Engine / Python中的键的问题

时间:2010-04-30 05:52:44

标签: python google-app-engine key if-statement

我正在尝试用Appengine / Python创建“表”之间的关系。想象一下,我有一个项目的“表”和一个颜色表。我通过将颜色键保存为项目的属性来保存项目的颜色。

这种方法效果很好,但这段特殊代码无效:

<select id="colorKey" name="colorKey">
  {% for color in colors %}
    <option value="{{ color.key }}"{% if color.key = item.colorKey %} selected="selected"{% endif %}>
      {{ color.name }} - {{ item.colorKey }} - {{ color.key }}
    </option>
  {% endfor %}
</select>

由于{{item.colorKey}}和{{color.key}}变量实际上是相同的字符串,因此我只能考虑类型的问题。

{{item.colorKey}}肯定是一个字符串。但也许{{color.key}}不是吗?

3 个答案:

答案 0 :(得分:1)

事实上。 color.key可能是指Key类的一个实例。 {% ifequal %}尝试将字符串与Key对象进行比较,并且永远不会满足条件。

当您使用{{ color.key }}时,Django会自动将此对象转换为字符串,但您必须为{% if equal %}提供实际字符串。

您可以在Color类中声明一个新属性,该属性将该键作为字符串返回,然后将其与{% if equal %}一起使用

class Color(db.Model):  
    ...
    @property
    def keyasstring(self):
        return str(self.key())

然后在你的Django模板中:

{% ifequal color.keyasstring item.colorKey %}

答案 1 :(得分:0)

 {% if color.key = item.colorKey %}

太少==

答案 2 :(得分:0)

Django不支持'if'标签中的任意表达式(或其他任何内容)。您需要使用'ifequal'标记 - 有关详细信息,请参阅the docs

相关问题