Как Django сохраняет десятичные значения? - PullRequest
2 голосов
/ 06 апреля 2010

что я делаю не так?

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, а голосов - это массив этихрейтинги, их разделение дает среднюю оценку для MyModel (извините, если я описал это неправильно из-за моего плохого английского)

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

тогда «что-нибудь» попадает в базу данных, но рейтинг - нет.

Зачем?я использую неправильный тип поля?

Алан.

Ответы [ 2 ]

2 голосов
/ 06 апреля 2010

max_digits - это количество цифр до и после десятичной точки. С вашими настройками он позволяет хранить числа от 0,00 до 0,99. Это правильно? Я не могу определить диапазон значений для среднего переменной.

1 голос
/ 06 апреля 2010

Модели не проходят проверку. Используемые вами типы в значительной степени имеют дело с такими вещами, как syncdb и т. Д., А не с фактическим форматированием данных, для этого и нужна форма.

...