/ / Choix multiple avec options fixes. Ne pas voir les options (Django) - python, django, modèle, manytomanyfield, choix multiple

Choix multiple avec options fixes. Ne pas voir les options (Django) - python, django, modèle, manytomanyfield, choix multiple

Je suis très nouveau à Django et j’essaie de le faire pour pouvoir sélectionner plusieurs choix pour un champ, mais j’ai des problèmes

Voici la 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 ce que j’ai indiqué ici et cela signifie potentiellement 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 rempliSur la page Web, une boîte avec les choix que j’ai spécifiés dans la classe Zone devrait apparaître, mais la boîte est complètement vide. Comment puis-je l'alimenter avec les choix tels que Nord-Ouest, Sud-Est, Sud-Ouest, etc.?

Réponses:

1 pour la réponse № 1

Ce n'est pas tout à fait la façon dont cela fonctionne. Découvrez cette définition dans la documentation de Django. L'exemple est assez clair, mais vous essayez également de faire quelque chose de vraiment étrange.

Je suppose que vous essayez de créer un modèle distinct pour vos choix - pour ce faire, vous utiliseriez un modelchoicefield ou un modelmultiplechoicefield - pour cela, vous définissez simplement votre modèle de zone en tant que 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 - tout devrait bien se passer, mais vous pouvez rencontrer des problèmes difficiles à diagnostiquer si vous utilisez également l’autorisation django.