Ajouter un champ à un formulaire reçu

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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()

Édité par Vayel

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte