Создайте экземпляр, который представляет среднее значение для нескольких экземпляров - PullRequest
2 голосов
/ 21 июля 2010

У меня есть Модель обзора, подобная той, которая определена ниже (я удалил несколько полей в REVIEW_FIELDS).Я хочу найти среднее для подмножества атрибутов и заполнить ModelForm вычисленной информацией.

REVIEW_FIELDS = ['noise']

class Review(models.Model):
  notes = models.TextField(null=True, blank=True)

  CHOICES = ((1, u'Quiet'), (2, u'Kinda Quiet'), (3, u'Loud'))
  noise = models.models.IntegerField('Noise Level', blank-True, null=True, choices=CHOICES)

class ReviewForm(ModelForm):

  class Meta:
    model = Review
    fields = REVIEW_FIELDS

Я могу легко добавить дополнительные поля в модель, а затем добавить их в список REVIEW_FIELDS.Затем я могу легко перебрать их в javascript и т. Д. На мой взгляд, я хочу вычислить среднее значение для целого ряда целочисленных полей и заполнить ReviewForm значениями атрибутов.Как я могу сделать что-то подобное?

stats = {}
for attr in REVIEW_FIELDS:
  val = reviews.aggregate(Avg(attr)).values()[0]
  if val:
    stats[attr] = int(round(val,0))
    r.attr = stats[attr]
r = Review()
f = ReviewForm(r)

Как я могу создать ReviewForm со средними значениями без жесткого кодирования значений атрибутов?Я хотел бы иметь возможность добавить поле, добавить значение в список и автоматически добавить его в вычисляемый набор статистики.

Если я делаю что-то в корне неправильно, пожалуйста, дайте мне знать,Я относительно новичок в django, так что, возможно, я заново изобретаю функциональность, которая уже существует.

1 Ответ

2 голосов
/ 21 июля 2010

После просмотра документов я передаю словарь в ReviewForm при его создании:

f = ReviewForm(stats)

Кажется, это работает очень хорошо! Если у кого-нибудь есть какие-либо предложения по лучшему способу сделать это, я весь в ушах!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...