2016-11-08 1 views
0

Wenn SieDjango: den Formularnamen oder ID aus Vorlage Erhalten

from django import forms 

class NameForm(forms.Form): 
    your_name = forms.CharField(label='Your name', max_length=100) 

class SecondNameForm(forms.Form): 
    your_name = forms.CharField(label='Your name', max_length=100) 

mehrere Formen haben, ist es eine Möglichkeit, dass in der Vorlage, können Sie herausfinden, ob form in innen context-NameForm oder SecondNameForm gehört

Ich habe ein benutzerdefiniertes Widget, das in seiner html, verwendet die id="" Kennung (die im gesamten HTML eindeutig sein sollte).

ich die ID zu so etwas wie

id="{{form.name}}_{{field.val}}" oder id="{{form.id}}_{{field.val}}" oder

wo {{form.name}} und {{form.id}} zuweisen möchten einige Wert mit dem Formular-Instanz zugeordnet und nicht der Inhalt der Form.

Antwort

2

Wenn Sie eine einzigartige prefix für jede Form, dann die Felder alle haben eindeutige IDs identifiziert.

form1 = NameForm(prefix='name') 
form2 = SecondNameForm(prefix='second_name') 
1

Ihrer Ansicht nach können Sie form.__class__.__name__ tun, aber dies innerhalb einer Vorlage funktioniert nicht, weil django-Vorlagen, die mit __

Das Beste, was zu tun in Ihrem Fall eine einfach wären nicht beginnen Variablen erkennen erstellen zusätzliche Kontextvariable, die den Formularnamen

id="{{form_name}}_{{field.val}}" 
0

Wenn Sie mit Formularen arbeiten, können Sie die ID aus den Vorlagen bekommen

{{form.instance.pk]}

Verwandte Themen