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
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
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
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})
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
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 %}
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.

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 !!