[Django]-TextField missing in django.forms

97👍

CharField might be what you are looking for.

EDIT: To clarify, the docs mention TextField as a model field type. You cannot use it as form field. The table that the OP pointed out indicates that a TextField in a model is represented as a CharField (with widget=forms.Textarea) in a corresponding ModelForm. I would imagine, then, that there is no form field with Textarea as its default widget.

If I were to guess why Django made this choice, I would say that having two fields that differ only in the widget they use, not in the type of data being stored, validation, etc. might be considered useless by the people at Django and hence you have to manually change the widget.

👤Umang

98👍

If you want a textarea you can use the forms.CharField with the forms.TextArea widget.

class ContactForm(forms.Form):
    message = forms.CharField(widget=forms.Textarea)

3👍

Just want to add a better example for beginners like me, as all mentioned above, there is no TextFile for ModelForm, and if you need to use it, for the OP’s case, should be:

first_name = forms.CharField(
     widget=forms.TextInput(attrs={'placeholder': 'first name'}),
     label=_(u'First name'), 
     required=False)

And if you do need a textarea field for description or comment, then you can use Textarea widget:

description = forms.CharField(
     widget=forms.Textarea(attrs={'placeholder': 'Please enter the  description'}))

0👍

forms.TextField doesn’t exist, check out the documentation you refer to, it’s only for the models.

You can prove this to yourself by looking at the actual django source django/forms/fields.py.

You must use CharField with widget=forms.TextArea as you say in your comments.

0👍

Just use forms.Textarea instead of forms.TextInput.

Leave a comment