Django: return dezimal statt seltsames Objekt

stimmen
0

Ich habe ein Modell mit einem Dezimal-Feld. Die Ausgabe von:

def special_method(self):
    return MyClass.objects.filter(product=self).order_by('-date_active')[0:1]

Bei diesem Modell ist:

[<MyClass: 10.00>]

... und ich habe die folgende Methode auf MyClass definiert:

def __str__(self):
    return str(self.rate)

Dies kann eine dumme Frage, aber wie kann ich die Dezimalzahl richtig anstelle dieses seltsame Objekt zurückgeben?

Vielen Dank.

Veröffentlicht am 30/12/2009 um 03:19
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

myclass_instance.rate werden Sie die Dezimalzahl.

[bearbeiten]

Ihre Methode ist dann so etwas wie:

def special_method(self):
    return MyClass.objects.filter(product=self).order_by('-date_active')[:1].values_list('rate', flat=True)

Oder Sie könnten in der Lage sein, etwas zu tun:

def special_method(self):
    return self.myclass_set.order_by('-date_active')[:1].values_list('rate', flat=True)
Beantwortet am 30/12/2009 um 03:25
quelle vom benutzer

stimmen
0

Sie verwenden filter, die immer eine QuerySet zurück - eine Liste artige Sammlung von mehreren Instanzen - auch wenn nur ein Element abgestimmt ist. Sie sollten verwenden .get()statt, die ein einzelnes Element zurück, und dann können Sie den Zugriff auf .rateEigenschaft auf die zurückgegebene Instanz.

Beantwortet am 30/12/2009 um 08:39
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more