2
我有一个Review Model(如下面定义的那样)(我删除了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比较陌生,所以我可能会重新发明已经存在的功能。
这是正确的做法:http://docs.djangoproject.com/en/1.2/ref/forms/api/#bound-and-unbound-forms – ars 2010-07-21 02:33:51