Bonjour,
Je travaille avec Django 1.9 et ai deux modèles de la forme suivante.
1 2 3 4 5 | class Tutorial(models.Model): ... class Image(models.Model): tutorial = models.ForeignKey(Tutorial, on_delete=models.CASCADE) title = models.CharField() |
Au niveau de l'application, j'ai des pages de la forme /tutoriel/id
permettant de consulter un tutoriel. Sur ces pages, j'ai un formulaire pour créer une image et de la relier au tutoriel. Seulement, je me demandais comment je devais gérer la clé étrangère au niveau du formulaire. Me faut-il faire un truc du genre ?
1 2 3 4 5 6 7 8 | class ImageForm(forms.ModelForm): class Meta: model = models.Image exclude = [] widgets = { 'tutorial': forms.HiddenInput(), } |
Le cas échéant, comment pré-remplir le champ tutorial
? Si je fais dans ma vue form = forms.ImageForm({'tutorial': tutorial})
il m'affiche des messages d'erreur avec le formulaire (comme Ce champ est obligatoire
, en parlant du titre).
Je pourrais exclure le champ tutorial
du formulaire, mais il m'insulte alors au moment de la sauvegarde.
Merci.
Edit : bon, la prochaine fois je chercherai correctement… Je peux effectivement exclure le champ tutorial
du formulaire, puis faire, dans ma vue :
1 2 3 4 | if form.is_valid(): image = form.save(commit=False) image.tutorial = tutorial image.save() |