Django-Unterschied .values().get(url=url) <==> .get(ur

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
ferix
User
Beiträge: 128
Registriert: Sonntag 1. Juni 2008, 18:21

Mittwoch 15. Oktober 2008, 21:02

Sehe ich es richtig, dass zwischen dieser Abfrage

content = Mainpages.objects.values().get(url=url)

und dieser Abfrage

content = Mainpages.objects.get(url=url)


der Unterschied, darin besteht, dass jeweils ein anderer Datentyp
zurückgegeben wird (beim ersten ein Dict und beim zweiten??)???
Ist es eigentlich sinnvoll eine Abfrage wie die erste zu machen?
Oder sollte man values in Verbindung mit get nur machen, wenn man bestimmte Datenfelder haben möchte?

Ansonsten weiß ich, dass es bei get nur genau ein Objekt zurückgegeben werden darf, ansonsten gibt es eine Exception.

Bei der Verwendung von Values ohne get wird eine Liste von Dicts zurückgegeben.[/i]
Zuletzt geändert von ferix am Mittwoch 15. Oktober 2008, 21:49, insgesamt 1-mal geändert.
lunar

Mittwoch 15. Oktober 2008, 21:11

Vielleicht solltest du sagen, dass es um Django geht, in diesem Forum werden nämlich noch andere Frameworks behandelt ...
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 16. Oktober 2008, 08:00

Wenn du die Version ohne ``values()`` nutzt, geht es über ein QuerySet (zu bevorzugen) und nimmt oder genau ein Objekt raus, was er dann als Insanz deines Models zurückgibt. Bei ``values()``.. passiert irgendwas anderes, vermutlich holt er erstmal alle Werte aus der DB, was einem ``SELECT`` ohne Limitierung entsprechen würde - will man nicht haben.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 16. Oktober 2008, 10:51

Ein Mainpages.objects.values() ist IMHO nichts anderes als SELECT * FROM...
Interessant ist IMHO values nur dann, wenn du ihm Parameter mitgibst: Mainpages.objects.values("eins", "zwei") raus kommt dann ein SELCT eins, zwei FROM...

Schau mal hier:
http://docs.djangoproject.com/en/dev/re ... ues-fields

Meiner Meinung macht es auch ehr andere herrum Sinn, also: content = Mainpages.objects.get(url=url).values() und auch nur dann, wenn du nur eine/mehrere bestimmte Felder haben willst. Ansonsten würde ich kein values() nehmen.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
ferix
User
Beiträge: 128
Registriert: Sonntag 1. Juni 2008, 18:21

Mittwoch 5. November 2008, 00:10

Was ist anders, wenn man es andersherum schreibt?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 5. November 2008, 00:45

ferix hat geschrieben:Was ist anders, wenn man es andersherum schreibt?
Dann werden vmtl. erstmal alle Daten aus der Datenbank geholt und danach erst gefiltert, das wollte Jens auch im ersten Absatz seines letzten Posts auch sagen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten