Django-fr

Forum

#1 04-02-2018 15:26:51

cobra85
Membre
Inscription : 11-05-2015
Messages : 58

affichage resulat ManyToMany

Bonjour,

J'ai une relation Many to Many dans un Models et je souhaite l'afficher dans un template:

#models.py

class Mission(models.Model):
    nom = models.ManyToManyField(Identite, blank=True, 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 Meta:
        ordering = ['nom']


    def something(self):
        return self.nom



class Doc_mission(models.Model):
    nom = models.ForeignKey(Identite, blank=True, null=True)
    mission = models.ForeignKey(Mission, null=True)
    document = models.ManyToManyField(Document)

    def __unicode__(self):
        return self.nom

#forms.py

class DocMissionForm(forms.ModelForm):


    document = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=Document.objects.all()) #PErmet d'avoir des cases à cocher en fonction des valuers contenue dans Typedoc

    class Meta:
        model = Doc_mission
        fields = ['nom','mission','document']
        labels = {
            'nom' : 'Nom',
            'mission' : 'Nom de la mission',
            'document' : 'Document',
        }

#views.py
def detail_annexe2(request,idm,id):
#idm = id missiln
id = id user
    document = Document.objects.filter(nom_id=id)
    identite = Identite.objects.filter(id=id)
    assurance = Assurance.objects.filter(nom_id=id)
    mission = Mission.objects.filter(id=idm)
    hotel = Hotel.objects.filter(mission_id=idm)
    deplacement = Deplacement.objects.filter(mission_id=idm)
    locvoiture = LocVoiture.objects.filter(mission_id=idm)
    docmission = Doc_mission.objects.filter(mission_id=idm)


    return render(request, 'detail_annexe2.html', {'documents':document,  'identites': identite, 'assurances' : assurance, 'missions':mission,
                                                   'hotels':hotel, 'deplacements':deplacement,'locvoitures':locvoiture, 'docmissions':docmission})

Voici le code dans mon template pour afficher les documents relative à la mission, mais cela ne m'afiche rien

{% if docmissions %}{% for docmission in docmissions %}{% for p in docmission.mission.all %}<p><b>Documents:</b> {{ p.nom }}{% endfor %}{% endfor %}{% endif %}

Hors ligne

#2 15-02-2018 15:17:43

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : affichage resulat ManyToMany

L'instance "docmission" de la classe "Mission" n'a pas de champs "mission". Il faut boucler sur "document".

Hors ligne

Pied de page des forums