Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Ajouter des données aux fields d'un form

0 votes

J'ai un formulaire 'Answer' surlequel je passe un object 'Question' dans le kwargs. En fait en fonction de la question, je renvoie un field différent, comme ci-dessous :

class AnswerForm(forms.ModelForm):

class Meta:
    model = Answer
    fields = ['content', ]

def __init__(self, *args, **kwargs):
    self.question = kwargs.pop('question')
    super(AnswerForm, self).__init__(*args, **kwargs)

    question_type = self.question.type_question

    # Check question type to create the form
    if question_type == Question.TEXT:
        self.fields['content'] = forms.CharField(widget=forms.TextInput())
    elif question_type == Question.TEXTAREA:
        self.fields['content'].widget = forms.Textarea(attrs={'rows': 4})
    elif question_type == Question.NUMBER:
        self.fields['content'] = forms.IntegerField()
    elif question_type == Question.DATE:
        self.fields['content'] = forms.DateField()
    elif question_type == Question.DATETIME:
        self.fields['content'] = forms.DateTimeField()

    self.fields['content'].label = _('Votre réponse')

Mon model 'Question' contient des champs 'Video' ou 'Image'. Lors de l'affichage de mon formulaire je souhaite afficher cette vidéo ou cette image.

Comment puis-je passer ces données dans le formulaire ? (sans avoir à toucher au javascript, et donc sans mettre d'informations dans le widget HTML)

demandé 30-Aou-2016 par ronan (184 points)

1 Réponse

0 votes

Django fourni des Classe Bases View qui font ca tout seul :

  • une pour la creation
  • une pour la modification
  • une pour la suppression

voir https://docs.djangoproject.com/fr/1.10/ref/class-based-views/generic-editing/#django.views.generic.edit.UpdateView

répondu 5-Sep-2016 par foxmask (2,670 points)
...