J'utilise une balise ifequal dans mon template django à l'intérieur d'une boucle où au moins l'un des éléments devrait être égal à l'autre à un certain point de la boucle mais pour une raison inconnue. Je me demandais s'il y avait des cas bizarres que je devrais connaître.Modèle Django ifequal tag
J'ai une liste d'ID de ville int qui devrait être cochée comme cases à cocher. Alors que je boucle à travers toutes les villes, pour chacun d'eux je passe en boucle ceux qui sont censés être vérifiés pour voir si l'égalité n'importe où dans la liste. Mais pour une raison quelconque, aucun d'entre eux ne correspond jamais. J'ai vérifié que les données sont correctes en utilisant le shell django, donc je sais que c'est là, je pense qu'il me manque un petit détail avec la façon dont je l'utilise. Heres le code:
Vue:
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')
clip Modèle:
{% 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 Modèle:
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
test Console:
>>> 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 Valeur:
1
Pouvez-vous publier votre modèle MemberProfile? – czarchaic
Ok, je l'ai posté. –