Bienvenue sur IndexError.

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

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 (188 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,892 points)
...