2010-04-30 2 views
0

Appengine/Python으로 "테이블"사이의 관계를 만들려고합니다. 아이템에 대한 "테이블"과 색상에 대한 테이블이 있다고 상상해보십시오. 색상 키를 항목의 속성으로 저장하여 항목의 색상을 저장합니다.Appengine/Python의 키를 비교하는 데 문제가 있습니다.

잘 작동,하지만 코드의 특정 부분이 작동하지 않습니다 그 다음 {{item.colorKey}}과 {{color.key}} 변수는 실제로 같은 문자 체인 때문에

<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}}가 아닌가요?

+0

'Model.key)'메소드입니다. –

답변

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

하나 너무 적은 == ?

+0

'{% ifequal color.key item.colorKey %}'를 사용해야 할 수도 있습니다. App Engine에 포함 된 Django의 버전이 확실하지 않습니다. –

+0

@ Jason Hall : Django 0.96.1 –

+0

최신 개발 버전에서 == 새로운 것 같습니다 - http://docs.djangoproject.com/ko/dev/ref/templates/builtins/#operator –

0

Django는 'if'태그 (또는 그와 관련된 모든 것)에서 임의의 표현식을 지원하지 않습니다. 'ifequal'태그를 사용해야합니다 (자세한 내용은 the docs 참조).

+0

레거시 django에 대해서만 true, 현재 템플릿에는 비교 연산자에 대한 지원이 있습니다. –

1

실제로. color.key은 아마도 Key 클래스의 인스턴스를 나타냅니다. {% ifequal %}은 문자열을 Key 개체와 비교하려고 시도하지만 조건이 충족되지 않습니다.

{{ color.key }}을 사용하는 경우 장고는이 개체를 문자열로 자동 캐스팅하지만 {% if equal %}에 실제 문자열을 입력해야합니다.

당신은 문자열로 키를 반환하여 Color 클래스에 새로운 속성을 선언 한 다음 장고 템플릿에서 다음 {% if equal %}

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

로 사용할 수 있습니다 : (

{% ifequal color.keyasstring item.colorKey %} 
관련 문제