Changeset 5118
- Timestamp:
- 04/28/07 08:55:24 (2 years ago)
- Files:
-
- django/trunk/django/db/models/fields/__init__.py (modified) (11 diffs)
- django/trunk/django/db/models/fields/related.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/db/models/fields/__init__.py
r5091 r5118 342 342 choices = property(_get_choices) 343 343 344 def formfield(self, **kwargs):344 def formfield(self, form_class=forms.CharField, **kwargs): 345 345 "Returns a django.newforms.Field instance for this database Field." 346 346 defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} 347 347 defaults.update(kwargs) 348 return form s.CharField(**defaults)348 return form_class(**defaults) 349 349 350 350 def value_from_object(self, obj): … … 406 406 407 407 def formfield(self, **kwargs): 408 defaults = {' required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}409 defaults.update(kwargs) 410 return forms.BooleanField(**defaults)408 defaults = {'form_class': forms.BooleanField} 409 defaults.update(kwargs) 410 return super(BooleanField, self).formfield(**defaults) 411 411 412 412 class CharField(Field): … … 425 425 426 426 def formfield(self, **kwargs): 427 defaults = {'max_length': self.maxlength , 'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}428 defaults.update(kwargs) 429 return forms.CharField(**defaults)427 defaults = {'max_length': self.maxlength} 428 defaults.update(kwargs) 429 return super(CharField, self).formfield(**defaults) 430 430 431 431 # TODO: Maybe move this into contrib, because it's specialized. … … 503 503 504 504 def formfield(self, **kwargs): 505 defaults = {' required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}506 defaults.update(kwargs) 507 return forms.DateField(**defaults)505 defaults = {'form_class': forms.DateField} 506 defaults.update(kwargs) 507 return super(DateField, self).formfield(**defaults) 508 508 509 509 class DateTimeField(DateField): … … 568 568 569 569 def formfield(self, **kwargs): 570 defaults = {' required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}571 defaults.update(kwargs) 572 return forms.DateTimeField(**defaults)570 defaults = {'form_class': forms.DateTimeField} 571 defaults.update(kwargs) 572 return super(DateTimeField, self).formfield(**defaults) 573 573 574 574 class EmailField(CharField): … … 587 587 588 588 def formfield(self, **kwargs): 589 defaults = {' required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}590 defaults.update(kwargs) 591 return forms.EmailField(**defaults)589 defaults = {'form_class': forms.EmailField} 590 defaults.update(kwargs) 591 return super(EmailField, self).formfield(**defaults) 592 592 593 593 class FileField(Field): … … 724 724 725 725 def formfield(self, **kwargs): 726 defaults = {' required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}727 defaults.update(kwargs) 728 return forms.IntegerField(**defaults)726 defaults = {'form_class': forms.IntegerField} 727 defaults.update(kwargs) 728 return super(IntegerField, self).formfield(**defaults) 729 729 730 730 class IPAddressField(Field): … … 763 763 def formfield(self, **kwargs): 764 764 from django.contrib.localflavor.us.forms import USPhoneNumberField 765 defaults = {' required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}766 defaults.update(kwargs) 767 return USPhoneNumberField(**defaults)765 defaults = {'form_class': USPhoneNumberField} 766 defaults.update(kwargs) 767 return super(PhoneNumberField, self).formfield(**defaults) 768 768 769 769 class PositiveIntegerField(IntegerField): … … 796 796 797 797 def formfield(self, **kwargs): 798 defaults = {' required': not self.blank, 'widget': forms.Textarea, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}799 defaults.update(kwargs) 800 return forms.CharField(**defaults)798 defaults = {'widget': forms.Textarea} 799 defaults.update(kwargs) 800 return super(TextField, self).formfield(**defaults) 801 801 802 802 class TimeField(Field): … … 841 841 842 842 def formfield(self, **kwargs): 843 defaults = {' required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}844 defaults.update(kwargs) 845 return forms.TimeField(**defaults)843 defaults = {'form_class': forms.TimeField} 844 defaults.update(kwargs) 845 return super(TimeField, self).formfield(**defaults) 846 846 847 847 class URLField(CharField): … … 860 860 861 861 def formfield(self, **kwargs): 862 defaults = {' required': not self.blank, 'verify_exists': self.verify_exists, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}863 defaults.update(kwargs) 864 return forms.URLField(**defaults)862 defaults = {'form_class': forms.URLField, 'verify_exists': self.verify_exists} 863 defaults.update(kwargs) 864 return super(URLField, self).formfield(**defaults) 865 865 866 866 class USStateField(Field): django/trunk/django/db/models/fields/related.py
r5091 r5118 554 554 555 555 def formfield(self, **kwargs): 556 defaults = {' queryset': self.rel.to._default_manager.all(), 'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}556 defaults = {'form_class': forms.ModelChoiceField, 'queryset': self.rel.to._default_manager.all()} 557 557 defaults.update(kwargs) 558 return forms.ModelChoiceField(**defaults)558 return super(ForeignKey, self).formfield(**defaults) 559 559 560 560 class OneToOneField(RelatedField, IntegerField): … … 620 620 621 621 def formfield(self, **kwargs): 622 defaults = {' queryset': self.rel.to._default_manager.all(), 'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text}622 defaults = {'form_class': forms.ModelChoiceField, 'queryset': self.rel.to._default_manager.all()} 623 623 defaults.update(kwargs) 624 return forms.ModelChoiceField(**defaults)624 return super(OneToOneField, self).formfield(**defaults) 625 625 626 626 class ManyToManyField(RelatedField, Field): … … 739 739 740 740 def formfield(self, **kwargs): 741 defaults = {'form_class': forms.ModelMultipleChoiceField, 'queryset': self.rel.to._default_manager.all()} 742 defaults.update(kwargs) 741 743 # If initial is passed in, it's a list of related objects, but the 742 744 # MultipleChoiceField takes a list of IDs. 743 if kwargs.get('initial') is not None: 744 kwargs['initial'] = [i._get_pk_val() for i in kwargs['initial']] 745 defaults = {'queryset' : self.rel.to._default_manager.all(), 'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} 746 defaults.update(kwargs) 747 return forms.ModelMultipleChoiceField(**defaults) 745 if defaults.get('initial') is not None: 746 defaults['initial'] = [i._get_pk_val() for i in defaults['initial']] 747 return super(ManyToManyField, self).formfield(**defaults) 748 748 749 749 class ManyToOneRel(object):
