--- /home/vegh/install/Django-0.95/django/db/models/fields/__init__.py	2006-07-28 03:46:05.000000000 +0200
+++ django/db/models/fields/__init__.py	2006-08-23 17:44:21.000000000 +0200
@@ -372,8 +372,35 @@
         return [forms.CheckboxField]
 
 class CharField(Field):
+    def __init__(self, *args, **kvargs):
+        self.form_type = kvargs.pop( 'form_type', 'input' )
+        self.form_length = kvargs.pop( 'form_length', None )
+        self.form_rows = kvargs.pop( 'form_rows', None )
+        self.form_cols = kvargs.pop( 'form_cols', None )
+        if self.form_type == 'input':
+            if self.form_rows: raise NameError('form_rows parameter is not allowed for form_type "input"')
+            if self.form_cols: raise NameError('form_cols parameter is not allowed for form_type "input"')
+        elif self.form_type == 'textarea':
+            if self.form_length: raise NameError('form_length parameter is not allowed for form_type "textarea"')
+        else:
+            raise NameError('invalid form_type argument: ' + self.form_type )
+        Field.__init__( self, *args, **kvargs )
+
+    def prepare_field_objs_and_params(self, manipulator, name_prefix):
+        field_objs, params = Field.prepare_field_objs_and_params(self, manipulator, name_prefix)
+        if self.form_length:
+            params['length'] = self.form_length
+        if self.form_rows:
+            params['rows'] = self.form_rows
+        if self.form_cols:
+            params['cols'] = self.form_cols
+        return (field_objs, params)
+
     def get_manipulator_field_objs(self):
-        return [forms.TextField]
+        if self.form_type == "textarea":
+            return [forms.LargeTextField]
+        else:
+            return [forms.TextField]
 
     def to_python(self, value):
         if isinstance(value, basestring):
@@ -711,6 +808,19 @@
         return [forms.SmallIntegerField]
 
 class TextField(Field):
+    def __init__(self, *args, **kvargs):
+        self.form_rows = kvargs.pop( 'form_rows', None )
+        self.form_cols = kvargs.pop( 'form_cols', None )
+        Field.__init__(self, *args, **kvargs)
+
+    def prepare_field_objs_and_params(self, manipulator, name_prefix):
+        field_objs, params = Field.prepare_field_objs_and_params(self, manipulator, name_prefix)
+        if self.form_rows:
+            params['rows'] = self.form_rows
+        if self.form_cols:
+            params['cols'] = self.form_cols
+        return (field_objs, params)
+
     def get_manipulator_field_objs(self):
         return [forms.LargeTextField]
 
