Index: django/contrib/admin/options.py
===================================================================
--- django/contrib/admin/options.py	(revision 9699)
+++ django/contrib/admin/options.py	(working copy)
@@ -64,51 +64,62 @@
                 # Otherwise, use the default select widget.
                 return db_field.formfield(**kwargs)
 
+        defaults = {}
         # For DateTimeFields, use a special field and widget.
         if isinstance(db_field, models.DateTimeField):
-            kwargs['form_class'] = forms.SplitDateTimeField
-            kwargs['widget'] = widgets.AdminSplitDateTime()
-            return db_field.formfield(**kwargs)
+            defaults['form_class'] = forms.SplitDateTimeField
+            defaults['widget'] = widgets.AdminSplitDateTime()
+            defaults.update(kwargs)
+            
+            return db_field.formfield(**defaults)
 
         # For DateFields, add a custom CSS class.
         if isinstance(db_field, models.DateField):
-            kwargs['widget'] = widgets.AdminDateWidget
-            return db_field.formfield(**kwargs)
+            defaults['widget'] = widgets.AdminDateWidget
+            defaults.update(kwargs)
+            return db_field.formfield(**defaults)
 
         # For TimeFields, add a custom CSS class.
         if isinstance(db_field, models.TimeField):
-            kwargs['widget'] = widgets.AdminTimeWidget
-            return db_field.formfield(**kwargs)
+            defaults['widget'] = widgets.AdminTimeWidget
+            defaults.update(kwargs)
+            return db_field.formfield(**defaults)
         
         # For TextFields, add a custom CSS class.
         if isinstance(db_field, models.TextField):
-            kwargs['widget'] = widgets.AdminTextareaWidget
-            return db_field.formfield(**kwargs)
+            defaults['widget'] = widgets.AdminTextareaWidget
+            defaults.update(kwargs)
+            return db_field.formfield(**defaults)
         
         # For URLFields, add a custom CSS class.
         if isinstance(db_field, models.URLField):
-            kwargs['widget'] = widgets.AdminURLFieldWidget
-            return db_field.formfield(**kwargs)
+            defaults['widget'] = widgets.AdminURLFieldWidget
+            defaults.update(kwargs)
+            return db_field.formfield(**defaults)
         
         # For IntegerFields, add a custom CSS class.
         if isinstance(db_field, models.IntegerField):
-            kwargs['widget'] = widgets.AdminIntegerFieldWidget
-            return db_field.formfield(**kwargs)
+            defaults['widget'] = widgets.AdminIntegerFieldWidget
+            defaults.update(kwargs)
+            return db_field.formfield(**defaults)
 
         # For CommaSeparatedIntegerFields, add a custom CSS class.
         if isinstance(db_field, models.CommaSeparatedIntegerField):
-            kwargs['widget'] = widgets.AdminCommaSeparatedIntegerFieldWidget
-            return db_field.formfield(**kwargs)
+            defaults['widget'] = widgets.AdminCommaSeparatedIntegerFieldWidget
+            defaults.update(kwargs)
+            return db_field.formfield(**defaults)
 
         # For TextInputs, add a custom CSS class.
         if isinstance(db_field, models.CharField):
-            kwargs['widget'] = widgets.AdminTextInputWidget
-            return db_field.formfield(**kwargs)
+            defaults['widget'] = widgets.AdminTextInputWidget
+            defaults.update(kwargs)
+            return db_field.formfield(**defaults)
     
         # For FileFields and ImageFields add a link to the current file.
         if isinstance(db_field, models.ImageField) or isinstance(db_field, models.FileField):
-            kwargs['widget'] = widgets.AdminFileWidget
-            return db_field.formfield(**kwargs)
+            defaults['widget'] = widgets.AdminFileWidget
+            defaults.update(kwargs)
+            return db_field.formfield(**defaults)
 
         # For ForeignKey or ManyToManyFields, use a special widget.
         if isinstance(db_field, (models.ForeignKey, models.ManyToManyField)):
