2013-04-05 4 views
1

Je suis très nouveau à Django et j'essaie de faire en sorte que je puisse choisir plusieurs choix pour un champ, mais je semble avoir des problèmes avec çaChoix multiple avec options fixes. Ne vois pas les options (Django)

Voici version simplifiée de mon modèle pour un site

class Zone(models.Model): 
    zone = (
     ('NE','Northeast'), 
     ('SE','Southeast'), 
     ('SW','Southwest'), 
     ('MW','Midwest'), 
     ('CN','Canada'), 
    ) 

class Site(models.Model): 

    region = models.ManyToManyField(Zone) 
    state = models.CharField(max_length = 30) 
    ... 


class SiteForm(ModelForm): 
    class Meta: 
     model = Site 

maintenant, il y a plus de zones que je montre ici et potentiellement cela signifie qu'un site peut avoir plusieurs zones simultanément.

fonction de vue simple:

def add_site(request): 
    if request.method == 'POST': 
     form = SiteForm(request.POST) 
     if form.is_valid(): 
      profile = form.save(commit=False) 
      profile.user = request.user 
      profile.save() 
     else: 
      form = SiteForm() 

    return render(request, 'index.html', {'form': form,}) 

Je crois comprendre qu'une fois le formulaire sur la page Web, je doit être présenté avec une boîte avec il choix que je spécifié dans la classe Zone, mais la boîte est complètement vide. Comment puis-je le peupler avec des choix tels que Northwest, Southeast, Southwest, etc?

+1

Votre modèle 'Zone' semble incomplet: il n'a pas de champs! –

+0

Merci! Je l'ai! Fondamentalement, je devais avoir un champ pour un nom de zone dans la classe Zone, puis charger Zone avec toutes les options que je voulais. –

Répondre

1

Ce n'est pas tout à fait comment cela fonctionne. Découvrez this definition dans la documentation de django. L'exemple est assez clair, mais vous essayez aussi de faire quelque chose de vraiment étrange.

Je suppose que vous essayiez de créer un modèle séparé pour vos choix - pour ce faire, vous utiliseriez un modelchoicefield ou un modelmultiplechoicefield - pour cela, vous devez simplement définir votre modèle Zone comme un modèle réel; ce que vous avez n'est pas du tout un modèle Django. En outre, "Site" est un modèle fourni par django. Cela devrait vous convenir, mais vous pouvez rencontrer des problèmes difficiles à diagnostiquer si vous utilisez également l'authenti- fication django.

Questions connexes