I am wiring a Profile model to my User with a signal receiver that updates the Profile on User updates, but I'm not sure what is the drawback of dealing with the Profile update in my own code?
My logic for posing this question is that I might want an user to exist without a profile, for example I don't want my admins to be associated with a credit card number nor I want the credit card number to be nullable.
Is assigning a signal receiver from the User to a Profile model just a matter of convenience or is there some other interaction that would be difficult to manage otherwise?
I think it would be more of a convenience. You also have to take into account if you want the users to be able to log in, as the "User" model will carry this capability with it. As for the admins having a credit card number, you could set this to a nullable field.
I know it seems odd to have your admin accounts mingling with your user accounts, but Django handles this quite well.
Check out this page. It covers quite a bit of detail with different authentication methods and strategies: https://www.codingforentrepreneurs.com/blog/how-to-create-a-custom-django-user-model.