diff --git a/AUTHORS b/AUTHORS
index f611c90fae4..747c3bc6a85 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -666,6 +666,7 @@ answer newbie questions, and generally made Django that much better:
Rachel Willmer
Jakub Wilk
Ian A Wilson
+ Chris Wilson
Jakub Wiśniowski
Maciej Wiśniowski
wojtek
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index 25ac74caee2..5e94e78c582 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -1850,7 +1850,10 @@ class TextField(Field):
return smart_text(value)
def formfield(self, **kwargs):
- defaults = {'widget': forms.Textarea}
+ # Passing max_length to forms.CharField means that the value's length
+ # will be validated twice. This is considered acceptable since we want
+ # the value in the form field (to pass into widget for example).
+ defaults = {'max_length': self.max_length, 'widget': forms.Textarea}
defaults.update(kwargs)
return super(TextField, self).formfield(**defaults)
diff --git a/django/forms/fields.py b/django/forms/fields.py
index 8b5fd2c55eb..1866bc17861 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -223,7 +223,7 @@ class CharField(Field):
def widget_attrs(self, widget):
attrs = super(CharField, self).widget_attrs(widget)
- if self.max_length is not None and isinstance(widget, TextInput):
+ if self.max_length is not None:
# The HTML attribute is maxlength, not max_length.
attrs.update({'maxlength': str(self.max_length)})
return attrs
diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt
index 4e02c66ca08..b3523334c0f 100644
--- a/docs/ref/models/fields.txt
+++ b/docs/ref/models/fields.txt
@@ -968,6 +968,13 @@ databases supported by Django.
A large text field. The default form widget for this field is a
:class:`~django.forms.Textarea`.
+.. versionchanged:: 1.7
+
+ If you specify a ``max_length`` attribute, it will be reflected in the
+ :class:`~django.forms.Textarea` widget of the auto-generated form field.
+ However it is not enforced at the model or database level. Use a
+ :class:`CharField` for that.
+
.. admonition:: MySQL users
If you are using this field with MySQLdb 1.2.1p2 and the ``utf8_bin``
diff --git a/docs/releases/1.7.txt b/docs/releases/1.7.txt
index 441a39616a7..096415c5b8e 100644
--- a/docs/releases/1.7.txt
+++ b/docs/releases/1.7.txt
@@ -488,6 +488,10 @@ Forms
Each radio button or checkbox includes an ``id_for_label`` attribute to
output the element's ID.
+* The ``