To add additional user profile information in Django, it seems that using AUTH_PROFILE_MODEL is the suggested way to go.
However, are there any disadvantages of adding additional profile fields directly to the django.contrib.auth.models.User table? To me, this seems to be much easier/straightforward (though granted, I don’t yet have a grasp on using signals).
Are there any very strong practical reasons against doing it this way?
I can think of following reasons:
Django updates
You have to update your
contrib.autheach time you update Django so you don’t break your application, and this is a maintenance nightmare. UsingAUTH_PROFILE_MODELmethod makes Django updates painless while it provides ability to add new information toUser. This is called loose coupling i belive.Userdependant applications3rd party application that heavily rely on
Userhaving the exact same fields will fail if you for example add fields toUsermodel that are declared asNOT NULLor remove some that are expected to be there.Further reading about
AUTH_PROFILE_MODEL: