Mein Django-Projekt verwendet Bootstrap v4.Wie programmgesteuert auf {{form.my_field.id_for_label}} zugreifen?
I durchlaufen alle Felder, um das HTML-Attribut class="form-control"
hinzuzufügen. Ich muss auch ein HTML-Attribut aria-describedby="{}Help"
hinzufügen, wobei {}
das id_for_label
für das Widget ist.
In der Vorlage Sprache konnte ich diesen Wert einfach mit {{ form.my_field.id_for_label }}
drucken, aber programmgesteuert weiß ich nicht, wie es geht.
Ich versuchte es mit ModelForm().fields['…'].widget.id_for_label()
, aber diese Methode erwartet ein Argument. Und wenn man den Django-Quellcode betrachtet, ist der Rückgabewert buchstäblich das Argument.
Irgendwelche Ideen?
class AbonnentForm(ModelForm):
class Meta:
model = Abonnent
fields = '__all__'
def __init__(self, *args, **kwargs):
super(AbonnentForm, self).__init__(*args, **kwargs)
# Add Bootstrap class to all <input> elements.
for key, value in self.fields.items():
value.widget.attrs.update({'class': 'form-control'})
if value.help_text:
id_for_label = "{}Help".format(value.widget.id_for_label())
value.widget.attrs.update({'aria-describedby': id_for_label})
self.fields['erste_ausgabe'].widget.attrs.update({'placeholder':'MM/JJJJ'})
self.fields['letzte_ausgabe'].widget.attrs.update({'placeholder':'MM/JJJJ'})