[django] Verständnisproblem iterieren und templates

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
normic
User
Beiträge: 12
Registriert: Mittwoch 8. Juli 2009, 17:28
Kontaktdaten:

Hallo,
ich möchte gern die Daten eines Datensatzes aus einem Model ausgeben, also quasi ein detail_view.

Der View sieht hier so aus:

Code: Alles auswählen

def entry_detail(request, id):
    return render_to_response('entry_detail.html', {'Entry': Entry.objects.get(pk=id) } )
In dem Template kann ich natürlich per {{ Entry.fieldname }} auf die einzelnen Felder zugreifen.
Ein Versuch mittels Schleife die einzelnen Felder zu durchlaufen - so wie es in dem Eingabeform ist - führt aber zu einem Fehler "Object Entry is not iterable".

Gibt es eine Möglichkeit die Felder entsprechend zu durchlaufen?
Erstens bin ich natürlich zu faul die Felder jeweils einzeln anzugeben und zweitens fürchte ich hier einem bösen Denk/Verständnisfehler aufzusitzen.

mfg
Michael
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Nein kannst du nicht, zumindest auf keinem einfachen/offensichtlichen Weg
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Denke am einfachsten wäre es noch im view eine Liste der Feldnamen zu erzeugen...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
normic
User
Beiträge: 12
Registriert: Mittwoch 8. Juli 2009, 17:28
Kontaktdaten:

Puh, ich dachte schon ich hätte ein Brett vor'm Kopf ;)

@jens: Ich glaube ehe ich das mache, versuch ich wieder ein Form zu nutzen und dieses readonly darzustellen, da gibt's ja so diverse Ansätze.

Jedenfalls vielen Dank Euch beiden.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Code: Alles auswählen

class IterableMixin:
    def __iter__(self):
        return self.__dict__.iteritems()


class Person(IterableMixin):
    def __init__(self, name, age):
        self.name, self.age = name, age

for n, v in Person("ich", 99):
    print n, "=", v
Stefan
Antworten