我有一个类似下面定义的评论模型(我删除了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比较新,所以我可能会重新发明已经存在的功能。
答案 0 :(得分:2)
在查看文档后,我在实例化时将字典传递给ReviewForm:
f = ReviewForm(stats)
它似乎工作得很好!如果有人对更好的方法有任何建议,我全都听见了!