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