id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 20744 Docs imply that forms.Field.__init__ accepts any keyword arguments Gunnlaugur Þór Briem nobody "At https://docs.djangoproject.com/en/dev/ref/forms/fields/ there is this: {{{ class Field(**kwargs) }}} with no stated constraints on `kwargs`, thus implying (incorrectly) that any keyword argument can safely be passed to the `forms.Field` constructor. That leads to code which worked in previous Django versions but regresses in the current version. The case I have in mind is [https://github.com/jezdez/django-authority/blob/11461f808160e09bb992f9c602c342718892bb6a/authority/admin.py#L28-L33 in django-authority's admin.py] where the `kwargs` passed to `formfield_callback` (which can include `request`) are passed on to `Field.formfield`, whose documentation says “All of the `kwargs` dictionary is passed directly to the form field’s `__init__()` method” ... and that `__init__` method ''can't'' include `request`. So upgrading Django yields this somewhat tricky-to-troubleshoot error in a django-authority admin action: {{{ TypeError: __init__() got an unexpected keyword argument 'request' ... File ""django/forms/models.py"", line 170, in fields_for_model formfield = formfield_callback(f, **kwargs) File ""authority/admin.py"", line 33, in formfield_for_dbfield return db_field.formfield(**kwargs) File ""django/db/models/fields/__init__.py"", line 646, in formfield return super(CharField, self).formfield(**defaults) File ""django/db/models/fields/__init__.py"", line 499, in formfield return form_class(**defaults) File ""django/forms/fields.py"", line 188, in __init__ super(CharField, self).__init__(*args, **kwargs) }}} At some point in this chain, the `request` keyword argument must be popped out. Presumably directly before the call to `Field.formfield`. In any case, this requirement should be documented. (Or `forms.Field.__init__` could be changed to tolerate and ignore unknown keyword arguments. But that's a riskier change.)" Bug new Documentation dev Normal Pashkin Accepted 0 0 0 0 0 0