[Django] Generic View - Doppelte Zeilen im Output entfernen
Verfasst: Freitag 11. September 2009, 11:50
Hallo Leute,
kurz um was es geht. Ich habe mehrere Produkte. Jedes Produkt wird von mehreren Anbietern zu unterschiedlichen Preisen angeboten, daher gibt es unterschiedliche Angebote.
Meine models.py
Das heißt, ich möchte einen Output wie diesen hier:
Ich dachte zunächst, ich gehe da mit einem Distinct drüber, aber das hilft leider nicht. Wie im Titel erwähnt verwende ich einen Generic View:
Ich hoffe, ihr versteht was ich meine. 
Grüße
kurz um was es geht. Ich habe mehrere Produkte. Jedes Produkt wird von mehreren Anbietern zu unterschiedlichen Preisen angeboten, daher gibt es unterschiedliche Angebote.
Meine models.py
Code: Alles auswählen
from django.db import models
class Produkt(models.Model):
name = models.CharField(max_length=30)
beschreibung = models.TextField()
class Meta:
verbose_name = "Produkt"
verbose_name_plural = "Produkte"
def __unicode__(self):
return self.name
class Anbieter(models.Model):
name = models.CharField(max_length=30)
class Meta:
verbose_name = "Anbieter"
verbose_name_plural = "Anbieter"
def __unicode__(self):
return self.name
class Marke(models.Model):
name = models.CharField(max_length=30)
class Meta:
verbose_name = "Marke"
verbose_name_plural = "Marken"
def __unicode__(self):
return self.name
class Angebot(models.Model):
produkt = models.ForeignKey(Produkt)
anbieter = models.ForeignKey(Anbieter)
marke = models.ForeignKey(Marke)
preis = models.DecimalField(max_digits=5, decimal_places=2)
class Meta:
verbose_name = "Angebot"
verbose_name_plural = "Angebote"
def __unicode__(self):
return unicode(self.produkt)
Mein derzeitiger Output sieht allerdings so aus:Produkt Anbieter1 Anbieter2 Anbieter3
Käse 2 1 3
Ich habe ja irgendwie die Befürchtung es liegt an meiner Templatelogik, daher poste ich diese auch mal:Produkt Anbieter1 Anbieter2 Anbieter3
Käse 2 1 3
Käse 2 1 3
Käse 2 1 3
Code: Alles auswählen
{% extends "base.html" %}
{% block titel %}{{ block.super }} - Index{% endblock %}
{% block inhalt %}
{% if object_list %}
<table style="text-align: center;">
<tr>
<th>Produkt</th>
{% for object in object_list %}
<th>{{ object.anbieter }}</th>
{% endfor %}
</tr>
{% for object in object_list %}
<tr>
<td>{{ object.produkt }}</td>
{% for object in object_list %}
<td>{{ object.preis }} €</td>
{% endfor %}
</tr>
{% endfor %}
</table>
{% endif %}
{% endblock %}
Code: Alles auswählen
info_dict = {
'queryset': Angebot.objects.all(),
}
urlpatterns = patterns('',
url(r'^index/$', 'django.views.generic.list_detail.object_list',
dict(info_dict, template_name='preisvergleich/index.html')),
)

Grüße