Ticket #9148: custom_widget.diff

File custom_widget.diff, 4.0 KB (added by gogna, 7 years ago)
  • django/contrib/admin/options.py

     
    6464                # Otherwise, use the default select widget.
    6565                return db_field.formfield(**kwargs)
    6666
     67        defaults = {}
    6768        # For DateTimeFields, use a special field and widget.
    6869        if isinstance(db_field, models.DateTimeField):
    69             kwargs['form_class'] = forms.SplitDateTimeField
    70             kwargs['widget'] = widgets.AdminSplitDateTime()
    71             return db_field.formfield(**kwargs)
     70            defaults['form_class'] = forms.SplitDateTimeField
     71            defaults['widget'] = widgets.AdminSplitDateTime()
     72            defaults.update(kwargs)
     73           
     74            return db_field.formfield(**defaults)
    7275
    7376        # For DateFields, add a custom CSS class.
    7477        if isinstance(db_field, models.DateField):
    75             kwargs['widget'] = widgets.AdminDateWidget
    76             return db_field.formfield(**kwargs)
     78            defaults['widget'] = widgets.AdminDateWidget
     79            defaults.update(kwargs)
     80            return db_field.formfield(**defaults)
    7781
    7882        # For TimeFields, add a custom CSS class.
    7983        if isinstance(db_field, models.TimeField):
    80             kwargs['widget'] = widgets.AdminTimeWidget
    81             return db_field.formfield(**kwargs)
     84            defaults['widget'] = widgets.AdminTimeWidget
     85            defaults.update(kwargs)
     86            return db_field.formfield(**defaults)
    8287       
    8388        # For TextFields, add a custom CSS class.
    8489        if isinstance(db_field, models.TextField):
    85             kwargs['widget'] = widgets.AdminTextareaWidget
    86             return db_field.formfield(**kwargs)
     90            defaults['widget'] = widgets.AdminTextareaWidget
     91            defaults.update(kwargs)
     92            return db_field.formfield(**defaults)
    8793       
    8894        # For URLFields, add a custom CSS class.
    8995        if isinstance(db_field, models.URLField):
    90             kwargs['widget'] = widgets.AdminURLFieldWidget
    91             return db_field.formfield(**kwargs)
     96            defaults['widget'] = widgets.AdminURLFieldWidget
     97            defaults.update(kwargs)
     98            return db_field.formfield(**defaults)
    9299       
    93100        # For IntegerFields, add a custom CSS class.
    94101        if isinstance(db_field, models.IntegerField):
    95             kwargs['widget'] = widgets.AdminIntegerFieldWidget
    96             return db_field.formfield(**kwargs)
     102            defaults['widget'] = widgets.AdminIntegerFieldWidget
     103            defaults.update(kwargs)
     104            return db_field.formfield(**defaults)
    97105
    98106        # For CommaSeparatedIntegerFields, add a custom CSS class.
    99107        if isinstance(db_field, models.CommaSeparatedIntegerField):
    100             kwargs['widget'] = widgets.AdminCommaSeparatedIntegerFieldWidget
    101             return db_field.formfield(**kwargs)
     108            defaults['widget'] = widgets.AdminCommaSeparatedIntegerFieldWidget
     109            defaults.update(kwargs)
     110            return db_field.formfield(**defaults)
    102111
    103112        # For TextInputs, add a custom CSS class.
    104113        if isinstance(db_field, models.CharField):
    105             kwargs['widget'] = widgets.AdminTextInputWidget
    106             return db_field.formfield(**kwargs)
     114            defaults['widget'] = widgets.AdminTextInputWidget
     115            defaults.update(kwargs)
     116            return db_field.formfield(**defaults)
    107117   
    108118        # For FileFields and ImageFields add a link to the current file.
    109119        if isinstance(db_field, models.ImageField) or isinstance(db_field, models.FileField):
    110             kwargs['widget'] = widgets.AdminFileWidget
    111             return db_field.formfield(**kwargs)
     120            defaults['widget'] = widgets.AdminFileWidget
     121            defaults.update(kwargs)
     122            return db_field.formfield(**defaults)
    112123
    113124        # For ForeignKey or ManyToManyFields, use a special widget.
    114125        if isinstance(db_field, (models.ForeignKey, models.ManyToManyField)):
Back to Top