您应该使用 aDecimalField
表示货币值而不是整数字段(否则您不能有预算,例如 150.40)
class Category(models.Model):
name = models.CharField(max_length=128)
budget = models.DecimalField(default=0.0, decimal_places=2, max_digits=5)
class Meta:
verbose_number_plural = 'Categories'
def __unicode__(self):
return unicode(self.name) # always return unicode from __unicode__
# This method will be used in the admin display
def budget_display(self):
# Normally, you would return this:
# return '${0:1.2f}'.format(self.budget)
# but a decimal field will display itself correctly
# so we can just do this:
return '${0}'.format(self.budget)
budget_display.short_description = 'Budget'
您可以在 中使用任何可调用对象list_display
,因此我们不显示该字段,而是调用该函数以返回我们想要的正确格式。
class CategoryAdmin(admin.ModelAdmin):
list_display = ('name', 'budget_display')
你能解释一下 ${0: 1.2f} 是什么意思吗
这是新的格式字符串语法:
>>> i = 123.45678
>>> '{0}'.format(i)
'123.45678'
>>> '{0:1.2f}'.format(i)
'123.46'
这{}
是您将传递给格式的任何内容的占位符。我0
在那里放了一个表示我希望第一个参数去那里:
>>> '{0} {1}'.format('a', 'b')
'a b'
>>> '{1} {0}'.format('a', 'b')
'b a'
:
in{0:
是格式规范的开始,它允许控制事物的显示方式:
>>> '{0:.2f}'.format(123.456)
'123.46'
>>> '{0:.3f}'.format(123.456)
'123.456'
>>> '{0:.3f}'.format(.456)
'0.456'