[Python] Cambia la larghezza degli elementi del modulo creati con ModelForm in Django


Answers

Ottima risposta di zuber, ma credo che ci sia un errore nel codice di esempio per il terzo approccio. Il costruttore dovrebbe essere:

def __init__(self, *args, **kwargs):
    super(ProductForm, self).__init__(*args, **kwargs) # Call to ModelForm constructor
    self.fields['long_desc'].widget.attrs['cols'] = 10
    self.fields['long_desc'].widget.attrs['cols'] = 20

Gli oggetti Field non hanno attributi 'attrs', ma i loro widget lo fanno.

Question

Come posso modificare la larghezza di un elemento del modulo area di testo se ho utilizzato ModelForm per crearlo?

Ecco la mia classe di prodotto:

class ProductForm(ModelForm):
    long_desc = forms.CharField(widget=forms.Textarea)
    short_desc = forms.CharField(widget=forms.Textarea)
    class Meta:
        model = Product

E il codice del modello ...

{% for f in form %}
    {{ f.name }}:{{ f }}
{% endfor %}

f è l'elemento reale della forma ...