TextField manquant dans django.les formes
from django import forms
class UserForm(forms.ModelForm):
first_name = forms.TextField(label=_(u'First name'), required=False)
last_name = forms.TextField(label=_(u'Last name'))
Qu'il me donne une "AttributeError: 'module' objet n'a pas d'attribut 'TextField'.
Tout semble ok, sauf le manque TextField:
ipdb> forms
<module 'django.forms' from '/usr/local/lib/python2.7/dist-packages/django/forms/__init__.pyc'>
ipdb> forms.
forms.BaseForm forms.EmailField forms.MultiWidget forms.TypedChoiceField
forms.BaseModelForm forms.Field forms.MultipleChoiceField forms.TypedMultipleChoiceField
forms.BooleanField forms.FileField forms.MultipleHiddenInput forms.URLField
forms.CharField forms.FileInput forms.NullBooleanField forms.ValidationError
forms.CheckboxInput forms.FilePathField forms.NullBooleanSelect forms.Widget
forms.CheckboxSelectMultiple forms.FloatField forms.PasswordInput forms.fields
forms.ChoiceField forms.Form forms.RadioSelect forms.fields_for_model
forms.ClearableFileInput forms.HiddenInput forms.RegexField forms.forms
forms.ComboField forms.IPAddressField forms.Select forms.formsets
forms.DEFAULT_DATETIME_INPUT_FORMATS forms.ImageField forms.SelectMultiple forms.model_to_dict
forms.DEFAULT_DATE_INPUT_FORMATS forms.IntegerField forms.SlugField forms.models
forms.DEFAULT_TIME_INPUT_FORMATS forms.Media forms.SplitDateTimeField forms.save_instance
forms.DateField forms.MediaDefiningClass forms.SplitDateTimeWidget forms.util
forms.DateInput forms.ModelChoiceField forms.TextInput forms.widgets
forms.DateTimeField forms.ModelForm forms.Textarea
forms.DateTimeInput forms.ModelMultipleChoiceField forms.TimeField
forms.DecimalField forms.MultiValueField forms.TimeInput
Une idée?
forms.TextInput
n'est pas ce dont vous avez besoin?- Pas de. TextInput est le widget utilisé par champ.
Vous devez vous connecter pour publier un commentaire.
CharField
peut-être ce que vous cherchez.EDIT: De préciser, les docs mention
TextField
comme un modèle type de champ. Vous ne pouvez pas l'utiliser comme un champ de formulaire. Le table que l'OP a souligné indique qu'unTextField
dans un modèle est représenté comme unCharField
(avecwidget=forms.Textarea
) dans une ModelForm. J'imagine, alors, qu'il n'existe pas de champ de formulaire avecTextarea
comme son widget par défaut.Si je devais deviner pourquoi Django fait ce choix, je dirais que le fait d'avoir deux champs qui ne diffèrent que dans le widget qu'ils utilisent, non pas dans le type de données stockées, validation, etc. peut être considéré comme inutile par le peuple à Django et par conséquent, vous devez modifier manuellement le widget.
Si vous voulez un textarea, vous pouvez utiliser les formulaires.CharField avec les formes.Widget TextArea.
Veux juste ajouter un meilleur exemple pour les débutants comme moi, comme tout ce qui est mentionné ci-dessus, il n'existe pas de fichier Texte pour ModelForm, et si vous avez besoin de l'utiliser, dans le cas des OP cas, devrait être:
Et si vous avez besoin d'un champ de type textarea pour la description ou commentaire, vous pouvez utiliser le widget Textarea:
formes.TextField n'existe pas, consultez la documentation vous vous référez, c'est uniquement pour les modèles.
Vous pouvez le prouver à vous-même en regardant la réelle source de django django/forms/fields.py.
Vous devez utiliser CharField avec widget=formes.TextArea comme vous le dites dans vos commentaires.
forms.TextField
. Il y a unmodels.TextField
et je ne voir dans la doc.