Django如何保存十进制值?
我哪里做错了?
class MyModel(models.Model):
name = models.CharField(max_length=100, verbose_name=_("Name"), blank=False, null=False)
rating = models.DecimalField(max_digits=2, decimal_places=2, default=0)
我大概是这样做的:
average = count/len(votes)
mymodel.rating = average
mymodel.save()
count
是给定的 MyModel
所有评分的总和,而 votes 是这些评分的一个数组,把它们相除就能得到 MyModel
的平均评分(如果我描述得不太对,抱歉,我的英语不好)。
如果我把之前的改成:
mymodel.name = 'anything'
mymodel.save()
那么“任何东西”都会存进数据库,但评分却没有。
这是为什么呢?我是不是用错了字段类型?
艾伦。
2 个回答
1
模型不进行验证。你使用的类型主要是处理像syncdb这样的事情,而不是实际的数据格式化,这正是表单的作用。
2
max_digits 是一个数字,表示小数点 前面 和 后面 的位数。根据你的设置,它可以让你存储从 0.00 到 0.99 之间的数字。这样理解对吗?我搞不清楚 average 变量的值范围是什么。