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
models.py
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:
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:
{% 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 !!
]]>