Custom Widgets
class NumberField(HiddenInput):
class Media:
js = (
settings.ADMIN_MEDIA_PREFIX + 'js/numberfields.js',
)
def render(self, name, value, attrs=None):
input = super(NumberField, self).render(name, value, attrs=attrs)
final_attrs = self.build_attrs(attrs)
units = final_attrs.get('units', '')
html = u"""
%(input)s
%(units)s
""" % {'input': input, 'units': units}
return mark_safe(html)
admin/common/widgets.py:
from django.forms import ModelForm
from app.common.widgets import NumberField
class CourseAdminForm(ModelForm):
class Meta:
widgets = {
'duration_string': NumberField(
attrs={'units': 'weeks'})
}
course/forms.py
from app import admin
from app.courses.models import Course
from app.courses.forms import CourseAdminForm
class CourseAdmin(ModelAdmin):
base_model = Course
form = CourseAdminForm
course/admin.py
Thursday, August 30, 12