wie Erzeuge ein Queryset in eine Tabelle template-django
Habe ich ein Modell, das definiert, wie gezeigt, die gehandelt wird auf eine Abfrage ein und bekommt eine Liste der Objekte, die platziert in die entsprechenden Zellen einer Tabelle. Hier ist der relevante Teil des Codes.
class Location(models.Model):
x=models.IntegerField(null=True)
y=models.IntegerField(null=True)
z=models.CharField(max_length=5,null=True)
def __unicode__(self):
return self.z
Aus dieser db möchte ich abrufen alle Objekte und legen Sie Sie in einer 2d-Tabelle mit der Zeile und Spalte definiert ist durch x,y des Objekts.Wenn kein Objekt vorhanden ist, für bestimmte (x,y) insbesondere dann, dass die slot angezeigt werden soll, leer in der Tabelle.Dies ist die Ansicht, die ich schrieb, zu treffen, mit denen diese Ziele.
def gettable(request):
events=[]
for xdim in xrange(3):
xe=[]
for ydim in xrange(3):
object=[0]
object.append(Location.objects.filter(x=xdim,y=ydim))
xe.append(object[-1])
events.append(xe)
return render(request, 'scheduler/table.html', {'events':events})
Hier ist der html-Teil des Codes
<table border="1">
<th>Header 0</th>
<th>Header 1</th>
<th>Header 2</th>
{% for event in events %}
<tr>
{% for x in event %} <td>{{ x }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
Ich zu bewältigen haben mehrere Probleme hier.
1.Mein code für views ist überhaupt nicht elegant (was schlecht ist da ich weiß, dass django bietet viele Sachen zu bewältigen solche Aufgaben), wie ich Variablen definieren, die speziell auf die Schleife Durchlaufen, statt jene aus den (x,y) die Werte der Datenbank-Objekte.
2.Ich bekomme die Ausgabe in [<Location: 21>]
- format, aber ich möchte es als '21'.
3.Wie Stelle ich die leeren Zellen, wo es doesnot exist jedes Objekt, für gegeben (x,y).
4.Bitte weisen auf keine andere Weise möglich sein kann, dass mein code einfacher und allgemein.
InformationsquelleAutor Kamal Reddy | 2012-02-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, um Ihren code einfacher, ich würde gerne empfehlen zu Anwendung django-tables2. Dieser Ansatz lösen können alle Ihre Fragen über die Erzeugung der Tabellen.
Als Dokumentation sagt:
Ist es auch möglich, Wörterbuch benutzen statt queryset.
InformationsquelleAutor ramusus
Pro Punkt:
__unicode__
(oder__string__
) - Methode auf, um die Rückgabe Ihrer gewünschten Artikel.HTH
InformationsquelleAutor Laur Ivan
Für Punkt 2, geben Sie jeder Zelle eine Liste statt eines einzelnen Objekts, {{ x.0 }} sollte Ihnen das Recht Wert, aber es schlägt auch Sie gehen falsch in Ihrer Ansicht Logik.
InformationsquelleAutor Andrew Ingram