Formes dynamiques Django - population de terrain à la volée?

J'ai scanné par le biais de documentation de Django, et les résultats de recherche Google, tous les après-midi et je suis encore un peu coincé dans ma tentative de créer un formulaire dynamique. J'espère que j'ai juste besoin de quelqu'un pour me pousser dans la bonne direction 🙂 je viens juste de commencer à apprendre Django, donc je suis encore très débutant; cependant, je suis déjà un intermédiaire python utilisateur.

Ce que je suis en train de faire est de créer un formulaire dynamique, où l'utilisateur effectue une sélection à partir d'un menu déroulant, et basé sur la sélection d'une autre partie du formulaire sera automatiquement mise à jour pour afficher des résultats pertinents pour l'élément actuellement sélectionné, mais à partir d'une autre table de base de données.

Je vais essayer et utiliser une version simplifiée des modèles de Django tutoriel pour mieux illustrer ce que je suis en train de faire:

# models.py
from django.db import models

class Poll(models.Model):
    question = models.CharField(max_length=200)

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)

Donc disons que je veux avoir quelque chose comme une liste déroulante de sélection de champ, rempli avec la question de chacun des bureaux de Scrutin dans la base de données. Je veux aussi avoir un champ texte, qui affiche les choix correspondants pour la mesure actuellement sélectionnée Sondage, qui sera mise à jour à la volée à chaque fois que l'utilisateur sélectionne une autre Piscine. J'ai été en mesure de comprendre cela en plaçant un bouton, et l'affichage des informations à la forme; Cependant, je suis en train de faire cela automatiquement lorsque l'utilisateur effectue une sélection. Mon point de vue, sorte de ressemble à quelque chose comme ceci pour le moment:

#view.py
from django import forms
from django.shortcuts import render_to_response

from myapp.models import Poll,Choice

class MyModelChoiceField(forms.ModelChoiceField):
    def label_from_instance(self, obj):
        return "%s" % obj.question

class PollSelectionForm(forms.Form):
    polls = MyModelChoiceField( queryset=Poll.objects.all() )

class ChoiceResults(forms.Form):
    def __init__(self, newid, *args, **kwargs):
        super(ChoiceResults, self).__init__(*args, **kwargs)

        self.fields['choice'] = forms.TextField( initial="" )

def main(request):
    return render_to_response("myapp/index.html", {
        "object": PollSelectionForm(), 
        "object2": ChoiceResults(),
    })

Mon modèle est très simple, il suffit de quelque chose comme

{{ object }}
{{ object2 }}

Je suis sûr que la façon dont je vais sur la création de formes n'est probablement pas la meilleure non plus, alors n'hésitez pas à critiquer qui que bien 🙂 Comme je l'ai mentionné, j'ai lu les solutions impliquant la rediffusion de la forme, mais je veux que cela arrive à la volée... si je peux reposter de manière transparente alors que ce serait bien je pense. J'ai aussi vu des bibliothèques qui vous permettra de créer dynamiquement des formulaires, mais cela ne semble exagéré.

source d'informationauteur Lucky Mike