Ich habe zwei Modelle A, BDjango: Zwei Tabellen und zusätzliches Feld für order_by aus der zweiten Tabelle mit
Mysql Abfrage ist
SELECT a.ID FROM a INNER JOIN b ON (a.ID = b.id) WHERE (b.key = 'vcount') AND (a.type = 'abc') AND (a.status = 'done') ORDER BY b.value+0 DESC LIMIT 0, 5
// Hier wird B.Wert long Feld, so hinzugefügt 0 in Integer konvertieren, dann sortiert.
Ich brauche Django Abfrage für die gleiche.
Ich habe versucht, diese
A.objects.filter(b__key ="vcount",type = "abc",status = "done").order_by('-b__value')[:5]
aber über Django Abfrage gibt falsche Ergebnis, da es von Ascii-Wert ist das Sortieren
So brauchen ‚Wert‘ Feld konvertieren dann müssen Integer sortieren .
Ich habe auch versucht, unter einem aber geben Fehler
xyz = A.objects.filter(b__key ="vcount",type = "abc",status = "done").extra(select={'value_int': "CAST(b__value AS UNSIGNED)"}).order_by('-value_int')[:5]
Vorschläge oder Hilfe geschätzt wird.
Was 'b_value' in Ihrem django Modell zu ändern? Dezimalfeld? – Sayse
Die Verwendung von 'extra()' ist der richtige Ansatz, denke ich. Was ist der Fehler? – C14L
b ist Modellname und Wert ist Feldname. Also wird b__value in order_by geschrieben. – Chandu