from django import forms
from django.forms import fields, widgets
class BaseAdminTextInputWidget(widgets.TextInput):
def __init__(self, *args, **kwargs):
super(BaseAdminTextInputWidget, self).__init__(*args, **kwargs)
self.attrs.update({
'size': '75',
})
WIDGET_OVERRIDES = [
(fields.CharField, BaseAdminTextInputWidget),
]
def override_widget(fields, field_type, widget):
for name,field in fields.items():
if isinstance(field, field_type):
field.widget = widget()
class BaseAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(BaseAdminForm, self).__init__(*args, **kwargs)
for field_type, widget in WIDGET_OVERRIDES:
override_widget(self.fields, field_type, widget)
def get_admin_form(form_model):
class ModelAdminForm(BaseAdminForm):
class Meta:
model = form_model
return ModelAdminForm
Comments
Why don't you use formfield_overrides option?
http://docs.djangoproject.com/en/dev/ref/contrib/admin/#formfield-overrides
#