为什么在django list_display

时间:2016-04-16 14:12:46

标签: django django-models django-admin

我想在我的django管理列表中显示一个字段,这是两个int变量的分区结果。我希望看到像0.95这样的浮动数字,但我已经得到了0,例如。为什么呢?

我的模特:

class Flat(models.Model):
    flat_price = models.PositiveIntegerField(verbose_name='Цена квартиры')
    flat_prediction_price = models.PositiveIntegerField(verbose_name='Прогноз')

    def show_price(self):
        return unicode(self.flat_price) + u" тыс. руб."

    def show_accuracy(self):
        if self.flat_prediction_price is None:
            return float(999)
        else:
            result = self.flat_price/self.flat_prediction_price                    return round(result, 2)

和管理员:

class FlatAdmin(admin.ModelAdmin):
    model = Flat
    inlines = [NeedInline]
    list_display = ('show_price','show_accuracy')

1 个答案:

答案 0 :(得分:1)

正如selchuk所提到的那样,如果你做float(self.flat_price) / self.flat_prediction_price会给你带来浮动的结果(你可以从那里回合)。

你现在正在做的事情是你将int除以int,这会给你一个int结果。然后你得到那个int结果之后进行四舍五入,因为它已经只是0,所以它不会围绕你希望它舍入的方式。通过使用int潜水浮动(或者可以将两者都转换为浮动),您将获得浮动结果并且可以舍入该结果。