2016-10-12 1 views
1

Disons que j'ai un modèle Person qui a par exemple 2 attributs: un nom et quelques expériences de travail (une zone de texte).Comment afficher le champ corrigé dans un formulaire dans Django?

J'ai un formulaire pour créer une personne et j'ai créé une règle de validation personnalisée pour le TextField (les expériences de travail).

Je voudrais afficher les erreurs associées au TextField (les expériences de travail) (J'ai déjà fait cela.) Et je voudrais afficher le contenu de TextField mais corrigé: Je ne sais pas comment . afficher

par exemple, voici quelques expériences de travail saisies par l'utilisateur:

Work at McDonalds for 2 years, Study Customer Service for 1 year 

Lorsque l'utilisateur soumet le formulaire, ce serait invalide à cause de ma règle de validation personnalisée pour le TextField *. * Je voudrais juste afficher l'entrée corrigée dans la page de formulaire (pas dans le T extField mais juste au-dessous comme un paragraphe par exemple), ** juste pour donner à l'utilisateur un moyen de voir son entrée corrigée:

- Work at McDonalds for 2 years 
- Study Customer Service for 1 year 

J'ai essayé cette option pour afficher l'entrée corrigée dans la page du formulaire:

class PersonCreate(CreateView): 
    model = Person 
    form_class = PersonForm 
    success_url = 'my_site/success.html' 
    def get_context_data(self, **kwargs): 
    # I have an error with the following line : 'NoneType' object has no attribute 'job_experiences' 
    job_experiences = self.object.job_experiences 
    #here is my code to get the formatted text 
    formatted_job_experiences = my_code(job_experiences) 
    context = super(PersonCreate, self).get_context_data(**kwargs) 
    context['formatted_job_experiences'] = formatted_job_experiences 
    return context 

Répondre

0

Il n'y a pas d'instance lors de la création de l'objet, les valeurs du champ de formulaire sont dans le dict data. Essayez ceci:

def get_context_data(self, **kwargs): 
    # on initial GET data will be empty, thus the default value 
    job_experiences = kwargs['form'].data.get('job_experiences', '') 
    return super(PersonCreate, self).get_context_data(
     formatted_job_experiences=my_code(job_experiences), 
     **kwargs 
    ) 
+0

Merci pour votre réponse, mais j'ai l'erreur suivante maintenant: KeyError à/my_site/personne/ajouter/'form' – Reveclair

+0

Les implémentations de base dans 'CreateView' toujours faire appel' 'get_context_data' avec formulaire = form', l'avez-vous remplacé d'une manière qui n'est pas montrée dans la question? –