Django如何保存十进制值?

2 投票
2 回答
2475 浏览
提问于 2025-04-15 21:16

我哪里做错了?

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 变量的值范围是什么。

撰写回答