2010-04-05 36 views
2

我做错了什么?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) 

ID我做这样的事情:

average = count/len(votes) 
mymodel.rating = average 
mymodel.save() 

计数给出为MyModel并投票的所有收视率的总和是那些评级阵列,他们的分裂给了平均得分为为MyModel(对不起,如果我形容不正确的,由于我的英语很差)

if i change previous to: 
mymodel.name = 'anything' 
mymodel.save() 

然后“什么”在数据库中结束了,但等级不。

为什么?我使用错误的字段类型?

Alan。

回答

2

max_digits是之前之后的小数点后的位数。使用您的设置,它可以让您存储介于0.00和0.99之间的数字。这样对吗?我无法弄清变量的平均值的取值范围。

+0

是的,例如,如果收视率可以介于0和5之间,那么'max_digits'需要是3. – 2010-04-05 23:22:41

+0

好的,就是这样。我会尽快测试。 – 2010-04-06 07:56:17

+0

这似乎是:)。谢谢。 – 2010-04-06 16:13:56

1

模型不验证。你使用的类型几乎可以处理诸如syncdb之类的东西,而不是实际的数据格式,这就是Form的用途。