Have UserChangeForm and UserCreationForm utilize get_user_model()
|Reported by:||ChocolateCookies||Owned by:||nobody|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
While I was trying to re-use the creation form for the admin interface with my custom User model (derived from AbstractUser), I stumbled upon an issue, namely I couldn't re-use it. I might have thought of a solution, but it's probably not very elegant.
In contrib.auth.forms the model meta property for UserChangeForm is User, but in for example AuthenticationForm, the method get_user_model is utilized. Consequently I cannot use the form, because this class imports auth.User instead of my own User model. Is this on purpose, or would it be possible to extend AUTH_USER_MODEL to the creation and change forms?
I would say it is only possible if a custom User model is derived from AbstractUser, as opposed to AbstractBaseUser (Like the Django docs suggest). AbstractUser guarantees the fields that these forms use (username, email), while AbstractBaseUser doesn't. Although that takes away a lot of the flexibility of specifying a custom User model, so maybe there's a middle ground somewhere.
class UserChangeForm(forms.ModelForm): ... class Meta: model = User ...