Me ya kamata a yi amfani da custom user model, da kuma ta yaya?
A yana maye gurbin Django's default don dace da bukattun aikin ku — ƙarawa filaye, canja identifier din shiryawa (misali email maimakon username), ko axtar aiki. Shawarwarin muhimmi, wanda aka maimaita sau-sau: saita custom user model na jiya, koda ba ku bukaci canja ba tukuna, saboda canjin sa gida daya jiya abu ne oniya mutum.## Me: default User yana iyaka kuma saura da sauri gida## ## Muhimmiyar dalili na yin shi JIYA## Wannan ne muhimmiyar gagaronka: ba shi zai sa kaai abin su saita custom user model a rana ta farko, amma yin su baya-bayannu gida a jiya jiya abu ne babbar, rashin jitu aiki — saboda haka kuka yin shi gida a farko azaman agogon.## Ta yaya: tsanowar AbstractUser (hanya mai sauki)## ```python
custom user model
User
a farkon karatu
text The default User has fixed fields (username, email, first/last name) and uses USERNAME as the login field. Real apps often need: ✓ Email-based login (no username) ✓ Extra fields (phone, avatar, role, preferences) on the user itself ✓ Custom authentication behavior
text ⚠️ Changing the user model AFTER migrations exist is VERY hard — the User model is referenced by auth, admin, sessions, foreign keys throughout the database. Swapping it later requires complex, risky data migrations. → ALWAYS define a custom user model at project START (before the first migration), even an empty one, so you can extend it freely later. Django's docs strongly recommend this for EVERY new project.
AUTH_USER_MODEL = "myapp.User"
````AbstractUser` yana riƙe duk Django's default filaye da auth kayan aiki — kuna ƙara filaye kaɗai. Sauki, lokaci gida hanya.## Ta yaya: AbstractBaseUser (cikakken sarrafi, misali email login)## ```python
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(unique=True)
USERNAME_FIELD = "email" # log in with EMAIL instead of username
REQUIRED_FIELDS = []
objects = CustomUserManager() # a manager defining create_user/create_superuser
````AbstractBaseUser` yana ba cikakken sarrafi akan user model (misali kawar username gaba ɗaya don email kaɗai login) — aiki da yawa, amma cikakken mallaka.## Yin marubucin user model daidai## ```python
from django.conf import settings
from django.contrib.auth import get_user_model
in models — reference via settings.AUTH_USER_MODEL
User = get_user_model() # NOT a direct import of the default User
```A ko lokaci marubucin user model ta settings.AUTH_USER_MODEL (a cikin models) da get_user_model() (a cikin code), ba kaiwa shigo default User kaɗai — saboda haka kodun ku yana aiki da custom model.## Me ya dace daidai yana muhimmi.Amfani da custom user model ilimi ne muhimmi tare da muhimmiyar, maigida-baigida karancin gagaronka wanda kowane Django mai karatu ya kamata ya zama lokacin asali: saita shi a farkon farko na jiya kowanne jiya.Dalili da wannan ya dace mutum ne tsanani a wahala — bayyana custom user model a rana ta farko (koda tunanin tunanin) gaba ɗaya kusan komi ba, sannan yana ba ƙarϊ na makammancin aiki, yayin da jujjuya zuwa custom user model bayan jiya ya sami migrations da bayani ne oniya mutum kuma rashin jitu, saboda User model yana iyaka tsakanin Django (authentication, admin, sessions) da ta waje key ɗaya a gida duk databse, bukowa tsanain, rashin jitu data migrations don canja.Wannan ne dalilin da Django's hannu argijiya yana karya shawarwarin custom user model don kowane sabuwar jiya, sannan ba bukaci takwas — agogon da rashin jitu migration oniya.Bayan wannan muhimmiyar lokaci shawarwari, fahimowa ta yaya don saita custom user models — AbstractUser don kawai ƙarawa filaye yayin riƙe Django's auth aiki (asali, sauki lokaci), da AbstractBaseUser don cikakken sarrafi kamar email-jitu login (kawar username gaba ɗaya) — ba shi da kundi don cikakkin aikace-aikacen bukattun (extra user filaye, alternative login dalilai, axtar authentication).Daidai ne da sanin marubucin user model daidai (ta settings.AUTH_USER_MODEL da get_user_model(), ba kaiwa tsadar shigo saboda kodun ku yana aiki da wane user model aka saita.Saboda kusan duk ainihin aikace-aikace yana da user-takaici bukattun fiye da Django's default (da kuma waɗanda ba su bukaci fiye daga mallaka), kuma saboda tsanani na ba yin wannan gida jiya ne mutum sokaaba, fahimowa custom user models — musamman kwajin don saita ɗaya a farkon karatu — ne muhimmi, gagaronka-muhimmi ilimi wanda rushe gida dakatar da gida-tsanani kuskure, yana sa shi a maigida-baigida Django best-practice hikima.