Django template ifequal tag
django, django-templates, python
Solution
{% for id in pflags %}{% ifequal id city.id %} ... {% endfor %}
Could it be that id is a string and city.id is an integer?
Problem
I'm using an ifequal tag in my django template inside a loop where atleast one of the items should equal the other at some point in the loop but for some reason it never displays what it should. I was wondering if there are any weird cases that i should know about. I have a list of int city ID's that should be checked as check boxes. so as i loop through all of the cities, for each one i loop through the ones that are supposed to be checked to see if the equal anywhere in the list. But for whatever reason none of them ever match. I verified that the data is right using the django shell, so i know its there, i think i'm missing some small detail with how i'm using it. Heres the code: View: ``` def editprof(request): try: if request.session['id']: loggedin = True except KeyError: loggedin = False try: citylist = CityList.objects.all() userid = request.session['id'] user = MemberProfile.objects.get(pk=userid) p = decrypt_pwd(user.Password) pflags = user.PublicVisibleFlags log_val(pflags[0]) pflags = pflags.split(',') mflags = user.MemberVisibleFlags log_val(mflags[0]) mflags = mflags.split(',') return render_to_response('editprof.html', {'user':user, 'p':p, 'loggedin':loggedin, 'citylist':citylist, 'pflags':pflags, 'mflags':mflags}) except KeyError: return HttpResponse('You must be logged in to view this page!') except MemberProfile.DoesNotExist: return HttpResponse('DatabaseError') ``` Template clip: ``` {% for city in citylist %} <tr> <td><input type='checkbox' name='public' value='{{ city.id }}' {% for id in pflags %}{% ifequal id city.id %}checked{% endifequal %}{% endfor %} /></td> <td><input type='checkbox' name='private' value='{{ city.id }}' {% for id in mflags %}{% ifequal id city.id %}checked{% endifequal %}{% endfor %} /></td> <td>{{ city.CityName }}</td> </tr> {% endfor %} ``` MemberProfile Model: ``` class MemberProfile(models.Model): Username = models.CharField(max_length=12,unique=True) Password = models.CharField(max_length=12) SecurityLevel = models.IntegerField() AccountExpirationDate = models.DateField() CityList = models.TextField() Address1 = models.CharField(max_length=30) Address2 = models.CharField(max_length=30) City = models.CharField(max_length=20) State = models.CharField(max_length=2) Zip = models.CharField(max_length=10) Email = models.EmailField() AltEmail = models.EmailField() HomePhone = models.CharField(max_length=18) BusinessPhone = models.CharField(max_length=18) Fax = models.CharField(max_length=18) Cell = models.CharField(max_length=18) AltPhone = models.CharField(max_length=18) PublicVisibleFlags = models.TextField() MemberVisibleFlags = models.TextField() WhoAmI = models.TextField() CompanyName = models.CharField(max_length=30) ServicesOffered = models.TextField() NumberOfUnits = models.IntegerField() SCREIAOffice = models.CharField(max_length=10) LastModifyBy = models.CharField(max_length=12) LastModifyDate = models.DateField(auto_now=True) def __unicode__(self): return self.Username ``` Console Test: ``` >>> from screia.core.models import MemberProfile >>> user = MemberProfile.objects.get(pk=1) >>> pflags = user.PublicVisibleFlags.split(',') >>> print pflags [u'1', u'4', u'7', u'12', u'25'] >>> i = 0 >>> while i < len(pflags): ... pflags[i] = int(pflags[i]) ... i+=1 ... >>> print pflags [1, 4, 7, 12, 25] ``` Log Value: ``` 1 ```