diff --git a/django/newforms/models.py b/django/newforms/models.py index ba756df408..f12b53dacb 100644 --- a/django/newforms/models.py +++ b/django/newforms/models.py @@ -14,6 +14,7 @@ from util import ValidationError, ErrorList from forms import BaseForm, get_declared_fields from fields import Field, ChoiceField, IntegerField, EMPTY_VALUES from widgets import Select, SelectMultiple, HiddenInput, MultipleHiddenInput +from widgets import media_property from formsets import BaseFormSet, _formset_factory, DELETION_FIELD_NAME __all__ = ( @@ -226,6 +227,8 @@ class ModelFormMetaclass(type): attrs) new_class = type.__new__(cls, name, bases, attrs) + if 'media' not in attrs: + new_class.media = media_property(new_class) declared_fields = get_declared_fields(bases, attrs, False) opts = new_class._meta = ModelFormOptions(getattr(new_class, 'Meta', None)) if opts.model: diff --git a/tests/modeltests/model_forms/models.py b/tests/modeltests/model_forms/models.py index 470312f5ca..1cd1041d9f 100644 --- a/tests/modeltests/model_forms/models.py +++ b/tests/modeltests/model_forms/models.py @@ -912,4 +912,22 @@ True u'...test3.png' >>> instance.delete() +# Media on a ModelForm ######################################################## + +# Similar to a regular Form class you can define custom media to be used on +# the ModelForm. + +>>> class ModelFormWithMedia(ModelForm): +... class Media: +... js = ('/some/form/javascript',) +... css = { +... 'all': ('/some/form/css',) +... } +... class Meta: +... model = PhoneNumber +>>> f = ModelFormWithMedia() +>>> print f.media + + + """}