Django: return decimal instead of strange object
I have a model with a decimal field. The output of:
def special_method(self):
return MyClass.objects.filter(product=self).order_by('-date_active')[0:1]
on this model is:
[<MyClass: 10.00>]
... and I have defined the following method on MyClass:
def __str__(self):
return str(self.rate)
This may be a silly question but how do I correctly return the decimal number instead of this strange object?
开发者_如何学PythonThanks.
myclass_instance.rate
will give you the decimal number.
[edit]
Your method will then be something like:
def special_method(self):
return MyClass.objects.filter(product=self).order_by('-date_active')[:1].values_list('rate', flat=True)
Or you might be able to do something like:
def special_method(self):
return self.myclass_set.order_by('-date_active')[:1].values_list('rate', flat=True)
You're using filter
, which always returns a QuerySet - a list-like collection of multiple instances - even if only one item is matched. You should use .get()
instead, which will return a single item, and then you can access the .rate
property on the returned instance.
精彩评论