2011-10-06 5 views
0

J'ai ces 2 modèles:Django - Ajax Formulaire type caché

class Exercise(models.Model): 
    text = models.TextField() 

class Score(models.Model): 
    user = models.ForeignKey(User) 
    exercise = models.ForeignKey(Exercise) 
    score = models.IntegerField() 
    class Meta: 
    unique_together = (('user', 'exercise',),) 

Un modèle affiche un exercice qu'un utilisateur peut compléter. Le utilisateur obtient un score à la fin.

Je voudrais envoyer le score à la base de données avec ajax.

J'ai préparé en vue d'obtenir les scores

def scoresexo(request): 
    if request.method == 'POST': 
    ret = {'type': 'info'} 
    score, created = Score.objects.get_or_create(
     user = request.user 
    , exercise_id = request.POST['exo'] 
    ) 
    score.score = request.POST['score'] 
    try: 
     score.save() 
    except: 
     ret['type'] = 'error' 
     ret['msg'] = 'error saving' 
    return HttpResponse(json.dumps(ret), mimetype='application/json') 

Dois-je utiliser un ModelForm caché ou un formulaire manuel/View?

Et à quoi ressemblerait-il?

Répondre

1

Pourquoi avez-vous besoin de formulaire ici? Envoyez la demande d'obtention/post avec le score et l'exercice à une certaine vue et sauvez les résultats là.

Et n'oubliez pas que n'importe qui peut faire une demande avec n'importe quelle donnée, donc vous devez penser à une validation.

+0

C'est ce que je commençais à faire mais je ne suis pas sûr de la réutilisabilité et de la maintenabilité de cette technique. Est-ce une bonne pratique? –

+0

Et quelle est l'alternative? Vous n'avez définitivement pas besoin de formulaire ici (champs de rendu, erreurs, help_text, pas besoin ici). Donc, vous avez juste besoin d'envoyer des données à voir. Je recommande juste d'utiliser quelque chose pour ajax, mon choix est [dajax] (http://www.dajaxproject.com/). – DrTyrsa