我有一个带小数字段的模型。输出:
def special_method(self):
return MyClass.objects.filter(product=self).order_by('-date_active')[0:1]
这个模型是:
[<MyClass: 10.00>]
...我在MyClass上定义了以下方法:
def __str__(self):
return str(self.rate)
这可能是一个愚蠢的问题,但我如何正确返回十进制数而不是这个奇怪的对象?
感谢。
答案 0 :(得分:1)
myclass_instance.rate
会给出十进制数字。
[编辑]
您的方法将类似于:
def special_method(self):
return MyClass.objects.filter(product=self).order_by('-date_active')[:1].values_list('rate', flat=True)
或者你可能会做类似的事情:
def special_method(self):
return self.myclass_set.order_by('-date_active')[:1].values_list('rate', flat=True)
答案 1 :(得分:0)
您正在使用filter
,它始终返回一个QuerySet - 一个类似于列表的多个实例集合 - 即使只匹配一个项目。您应该使用.get()
代替,它将返回单个项目,然后您可以访问返回实例上的.rate
属性。