Commit 95c74b9d authored by Chris Wilson's avatar Chris Wilson Committed by Claude Paroz
Browse files

Fixed #22206 -- Passed models.TextField.max_length to forms.CharField.maxlength

parent ac699cdc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -666,6 +666,7 @@ answer newbie questions, and generally made Django that much better:
    Rachel Willmer <http://www.willmer.com/kb/>
    Jakub Wilk <ubanus@users.sf.net>
    Ian A Wilson <http://ianawilson.com>
    Chris Wilson <chris+github@qwirx.com>
    Jakub Wiśniowski <restless.being@gmail.com>
    Maciej Wiśniowski <pigletto@gmail.com>
    wojtek
+4 −1
Original line number Diff line number Diff line
@@ -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)

+1 −1
Original line number Diff line number Diff line
@@ -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
+7 −0
Original line number Diff line number Diff line
@@ -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``
+4 −0
Original line number Diff line number Diff line
@@ -488,6 +488,10 @@ Forms
  Each radio button or checkbox includes an ``id_for_label`` attribute to
  output the element's ID.

* The ``<textarea>`` tags rendered by :class:`~django.forms.Textarea` now
  include a ``maxlength`` attribute if the :class:`~django.db.models.TextField`
  model field has a ``max_length``.

* :attr:`Field.choices<django.db.models.Field.choices>` now allows you to
  customize the "empty choice" label by including a tuple with an empty string
  or ``None`` for the key and the custom label as the value. The default blank
Loading