2011-07-05 2 views
0

나는이 테스트를 실행하려고 :장고 TemplateSyntax : 두 개의 시험에 '만약 ... 나 ...'

{! profile.id 경우 %를 = 100 profile.location == NULL의 %}

그러나 작동하지 않는 것 같습니다. 내가 왜 문서가 작동하지 않습니다 찾을 수 없습니다. 어떤 아이디어?

는 편집 :

는 SQL DB에

, profile.location의 값은 NULL입니다. 렌더링 된 결과는 없음입니다.

EDIT 2 : 여기

전체 체인이다. 사용자의 위치를 ​​파악하는 4 가지 방법이 있습니다. 당신이 볼 수 있듯이 그것은

{% if profile.city.id != 104 or profile.city %} 
     {{profile.city}} 
    {% else %} 
     {% if profile.mylocation != '' %} 
      {{ profile.mylocation }} 
      {% else %} 
       {% if profile.fbconnect == 1 and profile.location != '' and profile.location != "None" %} 
        {{profile.location}} 
       {% else %} 
        {% if profile.sglocation.city %}{{profile.sglocation.city}}{% else %}{{profile.sglocation.country}}{% endif %} 
       {% endif %} 
      {% endif %} 
    {% endif %} 

답변

0

NULL 없습니다 ... 거대한 엉망입니다. 보십시오 : 내가 당신이라면

{% if profile.id != 100 or not profile.location %} 
+0

감사합니다 크리스가 대답했습니다. 나는 여전히 'None'렌더링을 얻고있다. – Emile

+0

먼저,'profile.location == "None"'을 테스트 할 수 없습니다. 'None'은 문자열이 아니며, 템플릿에서 렌더링하는 것입니다. 단순히 변수 이름만으로 변수의 존재를 테스트 할 수 있습니다. 예를 들어, {% if profile.location %} {{profile.location}} {% endif %} –

+0

실제로이 인스턴스는 문자열입니다. 페이스 북은 때로는 "없음"이라는 문자열을 문자열로 제공하므로 그 테스트의 이유가됩니다. – Emile

0

, 나는 다시 파이썬으로 모든 논리를 던질 것, 예를 들면 :

class Profile(models.Model): 

    [your model fields and stuff] 

    def get_location(self): 
     [your location logic] 

를 다음 템플릿에 당신이 단지 수 있습니다

{{ profile.get_location }} 
+0

흠. 작동하지 않는 것 같습니다. 그것은 중요합니까 profile.city는 외래입니까? 이것은 떨리고 있습니다. – Emile

+0

코드를 더 게시하거나 더 많은 일을하려고한다면 어떨까요? 위의 스 니펫 테스트가 true (필자 만 시도했습니다.)보기의 프로필 개체가 a) 100이 아니거나 b) 위치가 없음 인 경우. –

+0

모두 추가 – Emile