2010-07-27 4 views
0

J'essaie de définir l'attribut 'name' personnalisé sous forme django.Définir l'attribut 'nom' personnalisé pour RadioSelect dans Django

J'ai essayé ce genre d'approche:

class BaseQuestionForm(forms.Form): 
    question_id = forms.CharField(widget=forms.HiddenInput) 
    answer = forms.ChoiceField(choices = [ ... ], widget=forms.RadioSelect) 

, puis définir le « name'-attr sur réponse avec:

form.fields['answer'].widget.name = 'new_name' 

Mais cela ne fonctionne pas, et name est toujours défini sur "answer" comme dans le nom du champ. Y a-t-il un moyen de le faire?

Répondre

1

Premier essai:

print form.fields['answer'].widget.name 

Je crois widget ne porte pas de nom (ok, je suis même assez sûr ;-)).

Pour obtenir ce que vous voulez, vous devez:

form.fields['new_name'] = form.fields['answer'] 
del form.fields['answer'] 

Ce sera toutefois déplacer new_name champ au fond des champs si vous utilisez simplement {{ form }} dans le modèle (ce dictionnaire est commandé). Django crée les noms des champs de formulaire dans le modèle en utilisant les noms des clés.

+0

Cela fonctionne plutôt bien. Cependant, existe-t-il un autre moyen de créer un formulaire généré par une base de données dans django - parce que c'est pour cela que j'utilise ce code. –

Questions connexes