Bonjour,
Je vous explique mon problème:
J'ai deux modeles, et souhaite afficher sur un même tableau (dans un template), les valeurs présentes dans le champ "nom" de chaque modeles ainsi qu'un système de pagination. (Je suis sous Django 1.9)
models.py
pour cela j'ai tenté d'écrire la vue suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 class Adresse_ip(models.Model): ... nom = models.CharField(max_length=30, unique=True) pays = models.ForeignKey(Pays,blank=True, null=True) ... class Meta: ordering = ['nom'] def __unicode__(self): return self.nom class Nom_domaine(models.Model): ... nom = models.CharField(max_length=30, unique=True) hebergeur = models.CharField(max_length=15, blank=True) ... class Meta: ordering = ['nom'] def __unicode__(self): return self.nom
Enfin dans mon template j'ai écris ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 from itertools import chain def total(request): nomdomaine= Nom_domaine.objects.all().order_by("nom") adresseip = Adresse_ip.objects.all().order_by("nom") post = sorted( chain(nomdomaine, adresseip), key=lambda car: car.nom, reverse=True) paginator = Paginator(post, 5) # Show 5 noms par page try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 try: post = paginator.page(page) except(EmptyPage, InvalidPage): post = paginator.page(paginator.num_pages) return render(request, 'total.html', {'nomdomaine': nomdomaine, 'adresseip': adresseip , 'post': post})
Le probleme est que le code ci-dessus me retourne non pas 5 noms par page mais 2 fois 5 noms (5 pour le nom de domaine et 5 pour adresse_ip) et ce sur 2 ou 3 pages.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 {% if post %} <!--<h2 class="sub-header">Section title</h2>--> <div id="wrapper"> <table cellpadding="0" cellspacing="0" border="0" class="sortable"> <thead> <tr> <th>Nom</th> <th>Détail</th> </tr> </thead> {% for nom_domaine in post %} <tbody> <tr> <td>{{ nom_domaine.nom }}</td> <td><a href=detail/{{ nom_domaine.id }}">{{ ' detail' }}</a></td> </tr> </tbody> {% endfor %} {% for adresse_ip in post %} <tbody> <tr> <td>{{ adresse_ip.nom }}</td> <td><a href=detail/{{ adresse_ip.id }}">{{ ' detail' }}</a></td> </tr> </tbody> {% endfor %} </table> </div> ... systeme de pagination... {% endif %}
Or je souhaite avoir sur une page 5 noms (peut importe lesquels) et sur la/les suivantes le reste par groupe de 5.
Merci de votre aide !!
Partager