#29449: Regression in UserCreationForm (and UserChangeForm) for custom user
models
-------------------------------------+-------------------------------------
Reporter: Sławek Ehlert | Owner: nobody
Type: Bug | Status: new
Component: contrib.auth | Version: 2.1
Severity: Release blocker | Resolution:
Keywords: auth forms | Triage Stage: Accepted
UserCreationForm UserChangeForm |
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Sławek Ehlert):
I've added some explicit tests in
[https://github.com/django/django/pull/10020 PR#10020].
Unfortunately it causes more failures than the ones I've introduced with
those new tests there.
What happens is:
- the test I've added overrides the {{{AUTH_USER_MODEL}}} setting with a
model that has a FK as a username field
({{{auth_tests.CustomUserWithFK}}}).
- the test fails on the {{{override_settings}}} part already, since the
{{{reload_auth_forms}}} receiver fails to reload the
{{{django.contrib.auth.forms}}} module with that user model in place
(fails with a similar {{{TypeError}}} that refers to 'limit_choices_to'
argument when trying to instantiate the {{{UsernameField}}})[*]
- because of the {{{override_settings}}} bug (see #29467) other tests
still see the {{{auth_tests.CustomUserWithFK}}} as a current user model.
[*] - the exact traceback for the mentioned error is:
{{{
======================================================================
ERROR: test_custom_form_username_not_charfield
(auth_tests.test_forms.UserChangeFormTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File
"/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/case.py",
line 59, in testPartExecutor
yield
File
"/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/case.py",
line 605, in run
testMethod()
File "/Users/slafs/testing/django/django/django/test/utils.py", line
364, in inner
with self as context:
File "/Users/slafs/testing/django/django/django/test/utils.py", line
336, in __enter__
return self.enable()
File "/Users/slafs/testing/django/django/django/test/utils.py", line
405, in enable
setting=key, value=new_value, enter=True)
File "/Users/slafs/testing/django/django/django/dispatch/dispatcher.py",
line 175, in send
for receiver in self._live_receivers(sender)
File "/Users/slafs/testing/django/django/django/dispatch/dispatcher.py",
line 175, in <listcomp>
for receiver in self._live_receivers(sender)
File
"/Users/slafs/testing/django/django/tests/auth_tests/test_forms.py", line
38, in reload_auth_forms
reload(django.contrib.auth.forms)
File
"/Users/slafs/.virtualenvs/django/lib/python3.6/importlib/__init__.py",
line 166, in reload
_bootstrap._exec(spec, module)
File "<frozen importlib._bootstrap>", line 618, in _exec
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removed
File "/Users/slafs/testing/django/django/django/contrib/auth/forms.py",
line 63, in <module>
class UserCreationForm(forms.ModelForm):
File "/Users/slafs/testing/django/django/django/forms/models.py", line
256, in __new__
apply_limit_choices_to=False,
File "/Users/slafs/testing/django/django/django/forms/models.py", line
172, in fields_for_model
formfield = f.formfield(**kwargs)
File
"/Users/slafs/testing/django/django/django/db/models/fields/related.py",
line 956, in formfield
**kwargs,
File
"/Users/slafs/testing/django/django/django/db/models/fields/related.py",
line 418, in formfield
return super().formfield(**defaults)
File
"/Users/slafs/testing/django/django/django/db/models/fields/__init__.py",
line 890, in formfield
return form_class(**defaults)
File "/Users/slafs/testing/django/django/django/forms/fields.py", line
213, in __init__
super().__init__(**kwargs)
TypeError: __init__() got an unexpected keyword argument
'limit_choices_to'
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/29449#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/063.2fe9d1a042adc9d4f4cdf00260b4f4eb%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.