您應該使用DecimalField
貨幣值不是一個整數字段(否則你不能有一個預算,如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}意味着
這是新format string syntax:
>>> 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'
在{0:
的:
是format specification的開始,它允許的事情是如何顯示的控制:
>>> '{0:.2f}'.format(123.456)
'123.46'
>>> '{0:.3f}'.format(123.456)
'123.456'
>>> '{0:.3f}'.format(.456)
'0.456'
謝謝我的男人。最好的答案! +1 – pynovice
您能解釋一下'$ {0:1.2f}是什麼意思' – pynovice
還有'max_digits'計數小數點後的數字嗎? – pynovice