kujosHeist
kujosHeist

Reputation: 854

Django template nested for loop with if statement not working

I need to have a nested loop in my Django template, where the outer loop goes through a list of objects, and the inner loop goes through a list of those object id's, and I want to only do something for the id's on the inner list, it never executes however. I think it has something to do with the condition for the if statement, because if I replace it with a true statement it works but it doesn't work as it is now

(I have checked to see that the id's overlap)

{% for outer in outer_obj_list %}
     {% for inner_id in inner_id_list %}
         {% if outer.id == inner_id %}
             // do something
             console.log({{inner_id}});
             console.log({{outer.id}});
         {% endif %}
     {% endfor %}
{% endfor %}

Upvotes: 2

Views: 2920

Answers (2)

Meer Mustan
Meer Mustan

Reputation: 21

Brother I am also face this problem so my clever mind get some clever solution about this problem we can do that with JavaScript easily so we need to run it in JavaScript and then.

{% for outer in outer_obj_list %}
     {% for inner_id in inner_id_list %}
          if(outer.id == inner_id.id ){
           console.log({{inner_id.id}});
           console.log({{outer.id}});
           //And also if we reserve place in DOM then we can 
           //change the inner Html of them easily like.
           //demo = document.getElementById("demo");
           //demo.innerHTML = inner_Id.id or outer.id
          }
     {% endfor %}
{% endfor %}

Upvotes: 1

djq
djq

Reputation: 15286

Syntax seems correct. I would just verbosely output everything.

Perhaps it should be something like this:

{% for main_obj in main_obj_list %}
     main_obj: {{ main_obj }}

     {% for obj_id in obj_id_list %}
        obj_id: {{ obj_id}}
        main_obj: {{ main_obj.id}}

         {% if main_obj.id == obj_id %}
             // do something
             match: {{main_obj.id}} ==  {{obj_id}} ;

         {% endif %}
     {% endfor %}
{% endfor %}

Upvotes: 1

Related Questions