The fact that models.CharField used to use forms.TextField is an indication that something was wrong ;-)

For backwards compatibility, but much more importantly, because it's the reasonable thing to expect, the defaults are identical to the current behaviour. To get a multiline CharField, do: foo = CharField(maxlength=MAX_FOO, multiline_admin=True). Conversely, to get a single-line TextField: bar = TextField(multiline_admin=False). There -- now postgres users have no reason to use CharField anymore, unless there is a real and legitimate limit to the max size a value can have.

The argument multiline_admin was chosen to be consistant with radio_admin which is the only other similar argument I found.