2010-09-17 23 views
13

Tôi có mã sau trong mẫu của tôi có nghĩa vụ so sánh giá trị của watchinstance.shift, có thể là "DAY" hoặc "NIGHT", thành chuỗi "DAY". Comparisson luôn thất bại.Giá trị biến mẫu Django để so sánh chuỗi chữ không thành công

{% for watchinstance in watchinstance_list %} 
    {% if watchinstance.shift == "DAY" %} 
     <p>shift is DAY</p> 
    {% endif %} 
{% endfor %} 

Sử dụng ifequal không hoạt động hoặc:

{% for watchinstance in watchinstance_list %} 
    {% ifequal watchinstance.shift "DAY" %} 
     <p>shift is DAY</p> 
    {% endifequal %} 
{% endfor %} 

Tuy nhiên, chỉ cần gọi {{ watchinstance.shift }} tác phẩm như mong đợi:

{% for watchinstance in watchinstance_list %} 
    {{ watchinstance.shift }} 
{% endfor %} 

lợi nhuận cả ngày lẫn đêm.

Tôi đã kiểm tra xem có watchinstance.shift trả về bất kỳ ký tự thừa nào không, và nó không giống như vậy ... Tôi có thể thiếu gì khác ở đây?

Trả lời

10

Một vài khả năng:

  1. Chuỗi .shift có khoảng trắng thừa. Sử dụng điều này để kiểm tra lại:

    {% for watchinstance in watchinstance_list %} 
        X{{ watchinstance.shift }}X 
    {% endfor %} 
    
  2. Các .shift thuộc tính không phải là một chuỗi, nhưng một đối tượng mà stringifies để "NGÀY" hoặc "ĐÊM". Trong trường hợp đó, thay thế biến số trong {{ watchinstance.shift }} sẽ trông giống như một chuỗi, nhưng so sánh trong {% ifequal watchinstance.shift "DAY" %} sẽ không thành công.

+0

+1. Có ý nghĩa. –

+0

1) Yup, đó là cách tôi đã kiểm tra các ký tự thừa. Không có gì cả. –

+0

2) Tôi nghi ngờ rằng có điều gì đó liên quan đến nó! Nó thực sự là một tham chiếu quan trọng nước ngoài để dụ của mô hình thay đổi! Sau khi tìm kiếm trong 2 giờ tôi cuối cùng đã tìm thấy một cách để xâu chuỗi nó! –

41

Vì vậy, sau khi tìm kiếm Django docs trong 2 giờ, cuối cùng tôi đã tìm thấy một cách để làm cho nó hoạt động:

{% if watchinstance.shift|stringformat:"s" == "DAY" %} 
+0

Bạn tiết kiệm một ngày của tôi! – azuax

Các vấn đề liên quan