Vous n'êtes pas identifié(e).
Bonjour,
Je cherche a afficher le nom de personne en fonction de leur ID. J'utilise la table User de Django pour m'authentifier.
La boucle for fonctionne bien, dans le terminal j'ai bien les résultats des ID sous cette forme:
p.id
1
p.id
2
qui s'affiche mais dans le template, je n'en ai qu'un seul résultat, le premier, alors que j'aimerai en plusieurs
Savez-vous pourquoi ?
Merci
Models.py
-------------
class Mission(models.Model):
nom = models.ManyToManyField(Identite, blank=True, null=True)
dsx = models.CharField(max_length=7, blank=True, default='', null=True)
pays = models.ForeignKey(Pays)
ville = models.CharField(max_length=15, null=True)
date_depart = models.DateField(blank=True, null=True)
date_retour = models.DateField(blank=True, null=True)
vol = models.TextField(blank=True, default='', null=True)
etat = models.BooleanField(default=False)
document = models.ManyToManyField(Typedoc, null=True)
#document = models.ManyToMany(Document, null=True)
fichenavette = models.TextField(null=True)
source = models.CharField(max_length=20, blank=True, default='', null=True)
class Assurance(models.Model):
nom = models.ForeignKey(User, null=True)
type_assurance = models.CharField(max_length=20)
num_contrat = models.CharField(max_length=10)
nom_assurance = models.CharField(max_length=10)
validite = models.DateField(blank=True, null=True)
acquereur = models.CharField(max_length=20, blank=True, null=True)
repondant = models.CharField(max_length=20, blank=True, null=True)
views.py
-----------
#idm = id de la mission
def detail_mission(request,idm):
identite = Identite.objects.all()
missionss = Mission.objects.filter(id=idm)
missions = Mission.objects.filter(id=idm)
print missions.query
for mission in missions:
for p in mission.nom.all():
print "p.id"
print p.id
assurance = Assurance.objects.all().filter(nom_id=p.id)
return render(request, 'detail_mission.html', {'identites': identite, 'missions':missionss, 'assurances':assurance})
templates
------------
{% if assurances %}
<table>
<thead>
<tr>
<th>nom:</th>
<th>Nom de l'assurance:</th>
</tr>
</thead>
<tbody>
<tr>{% for assurance in assurances %}
<td>{{ assurance.nom }}</td>
<td>{{ assurance.nom_assurance }}</td>
</tr>{% endfor %}
</tbody>
</table>{% endif %}
Merci à vous
Hors ligne
L'ordre de "<tr>{% for assurance in assurances %}" me semble suspect. Il n'y aura qu'un seul tag d'ouverture <tr> mais autant de fermeture </tr> que d'assurance.
Hors ligne
Bonjour,
J'ai testé en supprimant les balises liées au tableau. Mais cela ne change rien.
Un collège m'a conseillé de créer une liste vide entre les deux boucles for dans ma vue
assurance =[]
Et de mettre un .append dans la suite, du code mais je ne sais pas trop où.
Hors ligne