mirror of
https://github.com/django/django.git
synced 2025-10-26 15:16:09 +00:00
Fixed #25985 -- Updated signature of ModelAdmin.formfield_for_* to make request a positional argument.
This commit is contained in:
@@ -119,15 +119,13 @@ class BaseModelAdmin(six.with_metaclass(forms.MediaDefiningClass)):
|
||||
overrides.update(self.formfield_overrides)
|
||||
self.formfield_overrides = overrides
|
||||
|
||||
def formfield_for_dbfield(self, db_field, **kwargs):
|
||||
def formfield_for_dbfield(self, db_field, request, **kwargs):
|
||||
"""
|
||||
Hook for specifying the form Field instance for a given database Field
|
||||
instance.
|
||||
|
||||
If kwargs are given, they're passed to the form Field's constructor.
|
||||
"""
|
||||
request = kwargs.pop("request", None)
|
||||
|
||||
# If the field specifies choices, we don't need to look for special
|
||||
# admin widgets - we just need to use a select widget of some kind.
|
||||
if db_field.choices:
|
||||
@@ -177,7 +175,7 @@ class BaseModelAdmin(six.with_metaclass(forms.MediaDefiningClass)):
|
||||
# For any other type of field, just call its formfield() method.
|
||||
return db_field.formfield(**kwargs)
|
||||
|
||||
def formfield_for_choice_field(self, db_field, request=None, **kwargs):
|
||||
def formfield_for_choice_field(self, db_field, request, **kwargs):
|
||||
"""
|
||||
Get a form Field for a database Field that has declared choices.
|
||||
"""
|
||||
@@ -208,7 +206,7 @@ class BaseModelAdmin(six.with_metaclass(forms.MediaDefiningClass)):
|
||||
return db_field.remote_field.model._default_manager.using(db).order_by(*ordering)
|
||||
return None
|
||||
|
||||
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
|
||||
def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
||||
"""
|
||||
Get a form Field for a ForeignKey.
|
||||
"""
|
||||
@@ -229,7 +227,7 @@ class BaseModelAdmin(six.with_metaclass(forms.MediaDefiningClass)):
|
||||
|
||||
return db_field.formfield(**kwargs)
|
||||
|
||||
def formfield_for_manytomany(self, db_field, request=None, **kwargs):
|
||||
def formfield_for_manytomany(self, db_field, request, **kwargs):
|
||||
"""
|
||||
Get a form Field for a ManyToManyField.
|
||||
"""
|
||||
|
||||
@@ -52,19 +52,18 @@ class GeoModelAdmin(ModelAdmin):
|
||||
media.add_js(self.extra_js)
|
||||
return media
|
||||
|
||||
def formfield_for_dbfield(self, db_field, **kwargs):
|
||||
def formfield_for_dbfield(self, db_field, request, **kwargs):
|
||||
"""
|
||||
Overloaded from ModelAdmin so that an OpenLayersWidget is used
|
||||
for viewing/editing 2D GeometryFields (OpenLayers 2 does not support
|
||||
3D editing).
|
||||
"""
|
||||
if isinstance(db_field, models.GeometryField) and db_field.dim < 3:
|
||||
kwargs.pop('request', None)
|
||||
# Setting the widget with the newly defined widget.
|
||||
kwargs['widget'] = self.get_map_widget(db_field)
|
||||
return db_field.formfield(**kwargs)
|
||||
else:
|
||||
return super(GeoModelAdmin, self).formfield_for_dbfield(db_field, **kwargs)
|
||||
return super(GeoModelAdmin, self).formfield_for_dbfield(db_field, request, **kwargs)
|
||||
|
||||
def get_map_widget(self, db_field):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user