Django:返回十进制而不是奇怪的对象

时间:2009-12-30 02:19:26

标签: django django-models

我有一个带小数字段的模型。输出:

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)

这可能是一个愚蠢的问题,但我如何正确返回十进制数而不是这个奇怪的对象?

感谢。

2 个答案:

答案 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属性。