Django: retur desimal istedenfor merkelig objekt

stemmer
0

Jeg har en modell med en desimal felt. Utgangen av:

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

på denne modellen er:

[<MyClass: 10.00>]

... og jeg har definert følgende metode på MyClass:

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

Dette kan være et dumt spørsmål, men hvordan gjør jeg riktig returnere desimaltall i stedet for denne merkelig objekt?

Takk.

Publisert på 30/12/2009 klokken 00:19
kilden bruker
På andre språk...                            


2 svar

stemmer
1

myclass_instance.rate vil gi deg desimaltall.

[redigere]

Din metode vil da være noe sånt som:

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

Eller du kan være i stand til å gjøre noe sånt som:

def special_method(self):
    return self.myclass_set.order_by('-date_active')[:1].values_list('rate', flat=True)
Svarte 30/12/2009 kl. 00:25
kilden bruker

stemmer
0

Du bruker filter, som alltid returnerer et QuerySet - en liste-lignende samling av flere forekomster - selv om bare ett element er matchet. Du bør bruke .get()i stedet, som vil returnere et enkelt element, og deretter kan du få tilgang til .rateeiendommen på den returnerte eksempel.

Svarte 30/12/2009 kl. 05:39
kilden bruker

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