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

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

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

Beitragvon ferix » 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

Beitragvon 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 ...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » 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: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » 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

Beitragvon ferix » Mittwoch 5. November 2008, 00:10

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

Beitragvon Leonidas » 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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder