Drucken von Objekten in Django

9

Also habe ich Django erfolgreich mit einer bereits bestehenden Datenbank verbunden (inspizieren, validieren und synchronisieren) und ich habe eine App und ein Projekt erstellt und all das (ich lese das Django Buch und ich bin im Kapitel 5), aber wenn ich es tatsächlich laufe und Sachen drucke, bekomme ich einen (angenommenen) Fehler. Während ich in Python richtig importiere, was ich brauche ( from myapp.models import Artist ), aber wenn ich versuche, zum Beispiel die ersten fünf Zeilen in der Tabelle zu drucken ( print Artist.objects.all()[:5] ), bekomme ich folgendes:

%Vor%

Warum werden die Werte nicht tatsächlich gedruckt, statt wie ein Platzhalter? Gibt es etwas, das mir hier fehlt?

    
Gabe C. 14.04.2012, 01:42
quelle

3 Antworten

13

Django verwendet einen ORM (Object-Relational Mapper), der Daten zwischen Python-Objekten und Datenbankzeilen hin und her übersetzt. Wenn Sie also ein Element aus der Datenbank abrufen, wird es in ein Python-Objekt konvertiert.

Wenn dieses Objekt nicht definiert, wie es sich als Text anzeigen soll, erledigt Django es für Sie. Python macht dasselbe:

%Vor%

Wenn Sie alle tatsächlichen Werte für die Zeile für jedes Objekt anzeigen möchten, verwenden Sie values .

Hier ist das Beispiel aus der Dokumentation:

%Vor%     
agf 14.04.2012, 01:45
quelle
5

UPDATE: Verwenden Sie in Python 3.x __str__ anstelle von __unicode__

Was Sie sehen, ist eine Liste von Künstlermodell-Instanzen. Ihre Werte befinden sich in einem Python-Objekt. Wenn Sie die Darstellung dieser Instanzen hilfreicher gestalten möchten, sollten Sie die Methode __unicode__ definieren, damit sie etwas Nützliches drucken können:

Ссылка

Es ist kein Platzhalter, es ist die Darstellung des tatsächlichen Objekts, konvertiert in Unicode.

    
jdi 14.04.2012 01:46
quelle
0

wenn Sie die Druckmethode verwenden möchten über die Methode Unicode im Modell selbst

%Vor%

hier ein Beispielmodell

%Vor%     
mohd 14.04.2012 15:42
quelle

Tags und Links