Changeset 7360
- Timestamp:
- 03/24/08 18:46:24 (2 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/newforms-admin/django/contrib/admin/options.py
r7278 r7360 130 130 fields = None 131 131 fieldsets = None 132 form = forms.ModelForm 132 133 filter_vertical = () 133 134 filter_horizontal = () … … 309 310 Returns a Form class for use in the admin add view. This is used by 310 311 add_view and change_view. 311 312 Note that if you override this method, your form will *not*313 automatically get the custom admin widgets. raw_id_fields, fields,314 fieldsets, filter_vertical, and filter_horizonal will not apply to315 your form. You will have manually specify those widgets.316 312 """ 317 313 if self.declared_fieldsets: … … 319 315 else: 320 316 fields = None 321 return _modelform_factory(self.model, f ields=fields, formfield_callback=self.formfield_for_dbfield)317 return _modelform_factory(self.model, form=self.form, fields=fields, formfield_callback=self.formfield_for_dbfield) 322 318 323 319 def get_formsets(self, request, obj=None): … … 705 701 else: 706 702 fields = None 707 return _inlineformset_factory(self.parent_model, self.model, f k_name=self.fk_name, fields=fields, formfield_callback=self.formfield_for_dbfield, extra=self.extra)703 return _inlineformset_factory(self.parent_model, self.model, form=self.form, fk_name=self.fk_name, fields=fields, formfield_callback=self.formfield_for_dbfield, extra=self.extra) 708 704 709 705 def get_fieldsets(self, request, obj=None): django/branches/newforms-admin/django/newforms/models.py
r7351 r7360 278 278 279 279 # XXX: This API *will* change. Use at your own risk. 280 def _modelform_factory(model, form= BaseForm, fields=None, exclude=None,280 def _modelform_factory(model, form=ModelForm, fields=None, exclude=None, 281 281 formfield_callback=lambda f: f.formfield()): 282 282 # HACK: we should be able to construct a ModelForm without creating … … 288 288 setattr(Meta, 'exclude', exclude) 289 289 class_name = model.__name__ + 'Form' 290 return ModelFormMetaclass(class_name, ( ModelForm,), {'Meta': Meta},290 return ModelFormMetaclass(class_name, (form,), {'Meta': Meta}, 291 291 formfield_callback=formfield_callback) 292 292 … … 361 361 362 362 # XXX: Use at your own risk. This API *will* change. 363 def _modelformset_factory(model, form= BaseModelForm, formfield_callback=lambda f: f.formfield(),363 def _modelformset_factory(model, form=ModelForm, formfield_callback=lambda f: f.formfield(), 364 364 formset=BaseModelFormSet, 365 365 extra=1, can_delete=False, can_order=False, … … 428 428 429 429 # XXX: This API *will* change. Use at your own risk. 430 def _inlineformset_factory(parent_model, model, form= BaseModelForm, fk_name=None,430 def _inlineformset_factory(parent_model, model, form=ModelForm, fk_name=None, 431 431 fields=None, exclude=None, 432 432 extra=3, can_order=False, can_delete=True, django/branches/newforms-admin/tests/regressiontests/modeladmin/models.py
r7275 r7360 5 5 name = models.CharField(max_length=100) 6 6 bio = models.TextField() 7 sign_date = models.DateField() 7 8 8 9 … … 27 28 28 29 >>> ma.get_form(request).base_fields.keys() 29 ['name', 'bio' ]30 ['name', 'bio', 'sign_date'] 30 31 31 32 … … 41 42 >>> ma = ModelAdmin(Band, site) 42 43 >>> ma.get_fieldsets(request) 43 [(None, {'fields': ['name', 'bio' ]})]44 [(None, {'fields': ['name', 'bio', 'sign_date']})] 44 45 >>> ma.get_fieldsets(request, band) 45 [(None, {'fields': ['name', 'bio' ]})]46 [(None, {'fields': ['name', 'bio', 'sign_date']})] 46 47 47 48 … … 86 87 87 88 89 If we specify a form, it should use it allowing custom validation to work 90 properly. This won't, however, break any of the admin widgets or media. 88 91 92 >>> from django import newforms as forms 93 >>> class AdminBandForm(forms.ModelForm): 94 ... delete = forms.BooleanField() 95 ... 96 ... class Meta: 97 ... model = Band 98 99 >>> class BandAdmin(ModelAdmin): 100 ... form = AdminBandForm 101 102 >>> ma = BandAdmin(Band, site) 103 >>> ma.get_form(request).base_fields.keys() 104 ['name', 'bio', 'sign_date', 'delete'] 105 >>> type(ma.get_form(request).base_fields['sign_date'].widget) 106 <class 'django.contrib.admin.widgets.AdminDateWidget'> 89 107 90 108 """
