Seite 1 von 1

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

Verfasst: Mittwoch 15. Oktober 2008, 21:02
von ferix
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]

Verfasst: Mittwoch 15. Oktober 2008, 21:11
von lunar
Vielleicht solltest du sagen, dass es um Django geht, in diesem Forum werden nämlich noch andere Frameworks behandelt ...

Verfasst: Donnerstag 16. Oktober 2008, 08:00
von Leonidas
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.

Verfasst: Donnerstag 16. Oktober 2008, 10:51
von jens
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.

Verfasst: Mittwoch 5. November 2008, 00:10
von ferix
Was ist anders, wenn man es andersherum schreibt?

Verfasst: Mittwoch 5. November 2008, 00:45
von Leonidas
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.