Django

Code

Changeset 5118

Show
Ignore:
Timestamp:
04/28/07 08:55:24 (2 years ago)
Author:
mtredinnick
Message:

Refactored the formfield() methods on models.fields.Field subclasses slightly
to remove some repetition.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/db/models/fields/__init__.py

    r5091 r5118  
    342342    choices = property(_get_choices) 
    343343 
    344     def formfield(self, **kwargs): 
     344    def formfield(self, form_class=forms.CharField, **kwargs): 
    345345        "Returns a django.newforms.Field instance for this database Field." 
    346346        defaults = {'required': not self.blank, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} 
    347347        defaults.update(kwargs) 
    348         return forms.CharField(**defaults) 
     348        return form_class(**defaults) 
    349349 
    350350    def value_from_object(self, obj): 
     
    406406 
    407407    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) 
    411411 
    412412class CharField(Field): 
     
    425425 
    426426    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) 
    430430 
    431431# TODO: Maybe move this into contrib, because it's specialized. 
     
    503503 
    504504    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) 
    508508 
    509509class DateTimeField(DateField): 
     
    568568 
    569569    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) 
    573573 
    574574class EmailField(CharField): 
     
    587587 
    588588    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) 
    592592 
    593593class FileField(Field): 
     
    724724 
    725725    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) 
    729729 
    730730class IPAddressField(Field): 
     
    763763    def formfield(self, **kwargs): 
    764764        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) 
    768768 
    769769class PositiveIntegerField(IntegerField): 
     
    796796 
    797797    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) 
    801801 
    802802class TimeField(Field): 
     
    841841 
    842842    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) 
    846846 
    847847class URLField(CharField): 
     
    860860 
    861861    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) 
    865865 
    866866class USStateField(Field): 
  • django/trunk/django/db/models/fields/related.py

    r5091 r5118  
    554554 
    555555    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()
    557557        defaults.update(kwargs) 
    558         return forms.ModelChoiceField(**defaults) 
     558        return super(ForeignKey, self).formfield(**defaults) 
    559559 
    560560class OneToOneField(RelatedField, IntegerField): 
     
    620620 
    621621    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()
    623623        defaults.update(kwargs) 
    624         return forms.ModelChoiceField(**defaults) 
     624        return super(OneToOneField, self).formfield(**defaults) 
    625625 
    626626class ManyToManyField(RelatedField, Field): 
     
    739739 
    740740    def formfield(self, **kwargs): 
     741        defaults = {'form_class': forms.ModelMultipleChoiceField, 'queryset': self.rel.to._default_manager.all()} 
     742        defaults.update(kwargs) 
    741743        # If initial is passed in, it's a list of related objects, but the 
    742744        # 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) 
    748748 
    749749class ManyToOneRel(object):