我正在尝试用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}}不是吗?
答案 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。