2010-07-21 8 views
2

J'ai un modèle de révision comme celui défini ci-dessous (j'ai supprimé un tas de champs dans REVIEW_FIELDS). Je veux trouver la moyenne d'un sous-ensemble des attributs et remplir un ModelForm avec les informations calculées.Créer une instance qui représente la moyenne de plusieurs instances

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 

Je peux facilement ajouter plus de champs au modèle, puis les ajouter à la liste REVIEW_FIELDS. Ensuite, je peux facilement itérer sur eux en javascript, etc. À mon avis, je veux calculer la moyenne d'un tas de champs entiers et remplir un ReviewForm avec les valeurs d'attribut. Comment puis-je faire quelque chose comme ça? Comment puis-je créer un ReviewForm avec les valeurs moyennes sans coder en dur les valeurs d'attribut? J'aimerais pouvoir ajouter le champ, ajouter la valeur à la liste et l'ajouter automatiquement à l'ensemble des statistiques calculées.

Si je fais quelque chose de fondamentalement faux, s'il vous plaît faites le moi savoir. Je suis relativement nouveau à django, donc je pourrais réinventer une fonctionnalité qui existe déjà.

Répondre

2

Après avoir examiné les documents, je passe un dictionnaire au ReviewForm quand instancier:

f = ReviewForm(stats) 

Il semble fonctionner assez bien! Si quelqu'un a des suggestions sur une meilleure façon de le faire, je suis tout ouïe!

+0

C'est la bonne façon de le faire: http://docs.djangoproject.com/fr/1.2/ref/forms/api/#bound-and-unbound-forms – ars

Questions connexes