django-templates autovervollständigung - Django:Wie füge ich willkürlichen HTML-Attributen zu Eingabefeldern in einem Formular hinzu?




größe länge (5)

Wenn Sie "ModelForm" verwenden:

class YourModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(YourModelForm, self).__init__(*args, **kwargs)
        self.fields['city'].widget.attrs.update({
            'autocomplete': 'off'
        })

Ich habe ein Eingabefeld, das wie folgt mit einer Vorlage gerendert wird:

<div class="field">
   {{ form.city }}
</div>

Was wird wiedergegeben als:

<div class="field">
    <input id="id_city" type="text" name="city" maxlength="100" />
</div>

Angenommen, ich möchte dem Eingabeelement, das gerendert wird, ein autocomplete="off" -Attribut hinzufügen, wie würde ich das tun? Oder onclick="xyz()" oder class="my-special-css-class" ?



Wenn Sie ModelForm , gibt es neben der Möglichkeit, __init__ als @Artificioo in seiner Antwort zu verwenden, auch ein Widgetwörterbuch in Meta:

class AuthorForm(ModelForm):
    class Meta:
        model = Author
        fields = ('name', 'title', 'birth_date')
        widgets = {
            'name': Textarea(attrs={'cols': 80, 'rows': 20}),
        }

Relevante Dokumentation


Sorry für Werbung, aber ich habe vor kurzem eine App veröffentlicht ( https://github.com/kmike/django-widget-tweaks ), die solche Aufgaben noch weniger schmerzhaft macht, so dass Designer das tun können, ohne Python-Code zu berühren:

{% load widget_tweaks %}
...
<div class="field">
   {{ form.city|attr:"autocomplete:off"|add_class:"my_css_class" }}
</div>

oder alternativ,

{% load widget_tweaks %}
...
<div class="field">
   {% render_field form.city autocomplete="off" class+="my_css_class" %}
</div>

In Django 1.4 wird die Klausel SELECT ... FOR UPDATE unterstützt. Durch Datenbanksperren wird sichergestellt, dass versehentlich keine Daten gleichzeitig abgerufen werden.





django django-templates django-forms django-widget html