ਸਵਾਲ ਖੋਜੋ… ⌘ K English Tiếng Việt 日本語 한국어 Español العربية বাংলা čeština Dansk Deutsch Ελληνικά Suomi Français Gaeilge ગુજરાતી Hausa हिन्दी Hrvatski Magyar Bahasa Indonesia Italiano Basa Jawa ქართული Lietuvių मराठी Melayu Malti नेपाली Nederlands Norsk ਪੰਜਾਬੀ Polski Português Română Русский Slovenščina Shqip Svenska Kiswahili தமிழ் తెలుగు ภาษาไทย Türkçe اردو 简体中文
ਤੁਹਾਨੂੰ ਕਸਟਮ ਯੂਜ਼ਰ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਿਓਂ ਅਤੇ ਕਿਵੇਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ? · IT ਇੰਟਰਵਿਊ ਅਭਿਆਸ
ਹੋਮ / Django / ਤੁਹਾਨੂੰ ਕਸਟਮ ਯੂਜ਼ਰ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਿਓਂ ਅਤੇ ਕਿਵੇਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ? ਤੁਹਾਨੂੰ ਕਸਟਮ ਯੂਜ਼ਰ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਿਓਂ ਅਤੇ ਕਿਵੇਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ? ਇੱਕ ਕਸਟਮ ਯੂਜ਼ਰ ਮਾਡਲ Django ਦੇ ਡਿਫ਼ਾਲਟ User ਨੂੰ ਤਬਦੀਲ ਕਰਦਾ ਹੈ ਤਾਂਜੋ ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਦੀਆਂ ਜ਼ਰੂਰਤਾਂ ਨੂੰ ਪੂਰਾ ਕਰਿਆ ਜਾ ਸਕੇ — ਖੇਤਰ ਸ਼ਾਮਲ ਕਰਨਾ, ਲੌਗਇਨ ਪਛਾਣਕਾਰ ਨੂੰ ਬਦਲਨਾ (ਉਦਾਹਰਣ ਵਜੋਂ ਯੂਜ਼ਰਨੇਮ ਦੀ ਥਾਂ ਈਮੇਲ) ਜਾਂ ਵਿਹਾਰ ਨੂੰ ਵਿਅਕਤੀਗਤ ਬਣਾਉਣਾ। ਮਹੱਤਵਪੂਰਣ, ਵਾਰ-ਵਾਰ ਦਿੱਤੀ ਜਾਣ ਵਾਲੀ ਸਲਾਹ: ਇੱਕ ਕਸਟਮ ਯੂਜ਼ਰ ਮਾਡਲ ਸਥਾਪਿਤ ਕਰੋ ਪ੍ਰੋਜੈਕਟ ਦੇ ਸ਼ੁਰੂ ਤੋਂ ਹੀ , ਭਾਵੇਂ ਤੁਹਾਨੂੰ ਸ਼ੁਰੂ ਵਿੱਚ ਕੋਈ ਤਬਦੀਲੀ ਦੀ ਜ਼ਰੂਰਤ ਨਾ ਹੋਵੇ, ਕਿਉਂਕਿ ਇਸਨੂੰ ਬਾਅਦ ਵਿੱਚ ਬਦਲਣਾ ਬਹੁਤ ਮੁਸ਼ਕਲ ਹੈ।
ਕਿਉਂ: ਡਿਫ਼ਾਲਟ User ਸੀਮਿਤ ਹੈ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਬਦਲਣਾ ਮੁਸ਼ਕਲ ਹੈ
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.
ਇਹ ਮੁੱਖ ਵਿਹਾਰਕ ਸਬਕ ਹੈ: ਪਹਿਲੇ ਦਿਨ ਇੱਕ ਕਸਟਮ ਯੂਜ਼ਰ ਮਾਡਲ ਸਥਾਪਿਤ ਕਰਨ ਦੀ ਲਗਭਗ ਕੋਈ ਲਾਗਤ ਨਹੀਂ ਹੈ, ਪਰ ਇੱਕ ਸਥਾਪਿਤ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਇੱਕ ਨੂੰ ਲਾਗੂ ਕਰਨਾ ਇੱਕ ਵੱਡਾ, ਗ਼ਲਤੀ ਲਈ ਤਿਆਰ ਉਦਮ ਹੈ — ਇਸ ਲਈ ਤੁਸੀਂ ਬੀਮਾ ਦੇ ਰੂਪ ਵਿੱਚ ਪਹਿਲਾਂ ਹੀ ਇਸਨੂੰ ਕਰਦੇ ਹੋ।
ਕਿਵੇਂ: AbstractUser ਨੂੰ ਵਧਾਉਣਾ (ਆਸਾਨ ਤਰੀਕਾ) python ਕਾਪੀ ਕਰੋ
from django.contrib.auth.models import AbstractUser
class User (AbstractUser ):
phone = models.CharField(max_length=20 , blank=True )
avatar = models.ImageField(upload_to="avatars/" , blank=True )
is_premium = models.BooleanField(default=False )
python ਕਾਪੀ ਕਰੋ
AUTH_USER_MODEL = "myapp.User"
AbstractUser Django ਦੇ ਸਾਰੇ ਡਿਫ਼ਾਲਟ ਖੇਤਰ ਅਤੇ ਪ್ਰਮਾਣੀਕਰਣ ਯੰਤਰਸਮੂਹ ਨੂੰ ਸੁਰੱਖਿਤ ਰੱਖਦਾ ਹੈ — ਤੁਸੀਂ ਸਿਰਫ਼ ਖੇਤਰ ਸ਼ਾਮਲ ਕਰਦੇ ਹੋ। ਸਭ ਤੋਂ ਸਧਾਰਨ, ਸਭ ਤੋਂ ਆਮ ਪਹੁੰਚ।
ਕਿਵੇਂ: AbstractBaseUser (ਪੂਰਾ ਕੰਟਰੋਲ, ਉਦਾਹਰਣ ਵਜੋਂ ਈਮੇਲ ਲੌਗਇਨ) python ਕਾਪੀ ਕਰੋ
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
class User (AbstractBaseUser, PermissionsMixin):
email = models.EmailField(unique=True )
USERNAME_FIELD = "email"
REQUIRED_FIELDS = []
objects = CustomUserManager()
AbstractBaseUser ਯੂਜ਼ਰ ਮਾਡਲ ਉੱਤੇ ਪੂਰਾ ਕੰਟਰੋਲ ਦਿੰਦਾ ਹੈ (ਉਦਾਹਰਣ ਵਜੋਂ ਸਿਰਫ਼ ਈਮੇਲ-ਵਸਤੂ ਲੌਗਇਨ ਲਈ ਯੂਜ਼ਰਨੇਮ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਹਟਾਉਣਾ) — ਵਧੇਰੇ ਕੰਮ, ਪਰ ਅਧਿਕਤਮ ਲਚਕਦਾਰਤਾ।
ਯੂਜ਼ਰ ਮਾਡਲ ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਸੰਦਰਭਿਤ ਕਰਨਾ python ਕਾਪੀ ਕਰੋ
from django.conf import settings
from django.contrib.auth import get_user_model
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
User = get_user_model()
ਹਮੇਸ਼ਾ settings.AUTH_USER_MODEL (ਮਾਡਲ ਵਿੱਚ) ਅਤੇ get_user_model() (ਕੋਡ ਵਿੱਚ) ਦੇ ਮਾਧਿਅਮ ਨਾਲ ਯੂਜ਼ਰ ਮਾਡਲ ਦਾ ਹਵਾਲਾ ਦਿਓ, ਪੂਰਵ ਨਿਰਧਾਰਤ User ਨੂੰ ਸਿੱਧੇ ਆਯਾਤ ਕਰਕੇ ਨਹੀਂ — ਤਾਂਜੋ ਤੁਹਾਡਾ ਕੋਡ ਕਸਟਮ ਮਾਡਲ ਦੇ ਨਾਲ ਕੰਮ ਕਰੇ।
ਇਹ ਮਹੱਤਵਪੂਰਣ ਕਿਉਂ ਹੈ ਇੱਕ ਕਸਟਮ ਯੂਜ਼ਰ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਮਹੱਤਵਪੂਰਣ ਗਿਆਨ ਹੈ ਜਿਸ ਦਾ ਇੱਕ ਮਹੱਤਵਪੂਰਣ, ਵਾਰ-ਵਾਰ ਜ਼ੋਰ ਦਿੱਤਾ ਜਾਣ ਵਾਲਾ ਵਿਹਾਰਕ ਸਬਕ ਹੈ ਜੋ ਹਰੇਕ Django ਡਿਵੈਲਪਰ ਨੂੰ ਸਾਂਝਾ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ: ਹਰੇਕ ਪ੍ਰੋਜੈਕਟ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਇਸਨੂੰ ਸਥਾਪਿਤ ਕਰੋ ।
ਇਹ ਮਾਇਨੇ ਇਸ ਲਈ ਜ਼ਿਆਦਾ ਰੱਖਦਾ ਹੈ ਕਿਉਂਕਿ ਮੁਸ਼ਕਲ ਵਿੱਚ ਗੰਭੀਰ ਅਸਮਵਿਤਾ ਹੈ — ਪਹਿਲੇ ਦਿਨ ਇੱਕ ਕਸਟਮ ਯੂਜ਼ਰ ਮਾਡਲ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ (ਭਾਵੇਂ ਇੱਕ ਖਾਲੀ AbstractUser ਸਬਕਲਾਸ) ਲਗਭਗ ਕੁਝ ਨਹੀਂ ਖਰਚਦਾ ਅਤੇ ਅਮੂਲ ਲਚਕਦਾਰਤਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਜਦਕਿ ਪ੍ਰੋਜੈਕਟ ਦੇ migrations ਅਤੇ ਡੇਟਾ ਮਿਲਣ ਦੇ ਬਾਅਦ ਇੱਕ ਕਸਟਮ ਯੂਜ਼ਰ ਮਾਡਲ ਵਿੱਚ ਬਦਲਣਾ ਬਹੁਤ ਮੁਸ਼ਕਲ ਅਤੇ ਜ਼ਰਾ ਸੰਕਟਮਯ ਹੈ, ਕਿਉਂਕਿ User ਮਾਡਲ Django ਦੌਰਾਨ (ਪ੍ਰਮਾਣੀਕਰਣ, ਐਡਮਿਨ, ਸ਼ਰਾ) ਵਿੱਚ ਡੂੰਘਾ ਹਵਾਲਾ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਪੂਰੇ ਡੇਟਾਬੇਸ ਦੀ ਵਿਦੇਸ਼ੀ ਚਾਬੀਆਂ ਦੁਆਰਾ, ਬਦਲਣ ਲਈ ਗੁੰਝਲਦਾਰ, ਗ਼ਲਤੀ-ਲਈ ਤਿਆਰ ਡੇਟਾ migrations ਦੀ ਜ਼ਰੂਰਤ ਹੁੰਦੀ ਹੈ।
ਇਸ ਕਾਰਨ ਇਹ ਹੈ ਕਿ Django ਦਾ ਖੁਦ ਦਾ ਡਾਕੂਮੈਂਟੇਸ਼ਨ ਹਰੇਕ ਨਵੇਂ ਪ੍ਰੋਜੈਕਟ ਲਈ ਇੱਕ ਕਸਟਮ ਯੂਜ਼ਰ ਮਾਡਲ ਦੀ ਜ਼ਬਰਦਸਤੀ ਸੁਝਾਓ ਹੈ, ਭਾਵੇਂ ਤੁਰੰਤ ਜ਼ਰੂਰਤ ਦੀ ਕੋਈ ਵਕੂਲ ਨਹੀਂ ਹੋਵੇ — ਇਹ ਇੱਕ ਭਵਿਸ਼ਵਾਣੀ migration nightmare ਦੇ ਵਿਰੁੱਧ ਬੀਮਾ ਹੈ।
ਇਸ ਮਹੱਤਵਪੂਰਣ ਸਮੇਂ ਦੀ ਸਲਾਹ ਤੋਂ ਪਰੇ, ਕਸਟਮ ਯੂਜ਼ਰ ਮਾਡਲ ਕਿਵੇਂ ਬਣਾਉਣੇ ਹਨ ਇਸ ਨੂੰ ਸਮਝਣਾ — AbstractUser Django ਦੇ ਪ੍ਰਮਾਣੀਕਰਣ ਵਿਵਹਾਰ ਨੂੰ ਸੁਰੱਖਿਤ ਰੱਖਦੇ ਹੋਏ ਸਿਰਫ਼ ਖੇਤਰ ਸ਼ਾਮਲ ਕਰਨ ਲਈ (ਆਮ, ਆਸਾਨ ਮਾਮਲਾ), ਅਤੇ AbstractBaseUser ਈਮੇਲ-ਆਧਾਰਿਤ ਲੌਗਇਨ ਜਿਵੇਂ ਪੂਰਾ ਕੰਟਰੋਲ ਲਈ (ਯੂਜ਼ਰਨੇਮ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਹਟਾਉਣਾ) — ਅਸਲ ਐਪਲੀਕੇਸ਼ਨ ਜ਼ਰੂਰਤਾਂ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਕਮੀਬ ਹੈ (ਵਾਧੂ ਯੂਜ਼ਰ ਖੇਤਰ, ਬਦਲਵੀਂ ਲੌਗਇਨ ਪਛਾਣਕਾਰ, ਕਸਟਮ ਪ੍ਰਮਾਣਨ)।
ਬਰਾਬਰ ਮਹੱਤਵਪੂਰਨ ਯੂਜ਼ਰ ਮਾਡਲ ਦੀ ਸਹੀ ਸੰਦਰਭ ਨੂੰ ਜਾਣਨਾ ਹੈ (settings.AUTH_USER_MODEL ਅਤੇ get_user_model() ਦੁਆਰਾ, ਕਦੇ ਸਿੱਧੀ ਆਯਾਤ ਨਹੀਂ) ਤਾਂਜੋ ਕੋਡ ਜਾ ਭਵਿਸ਼ਵਾਣੀ ਯੂਜ਼ਰ ਮਾਡਲ ਦੇ ਨਾਲ ਕੰਮ ਕਰੇ।
ਕਿਉਂਕਿ ਲਗਭਗ ਹਰੀ ਅਸਲ ਐਪਲੀਕੇਸ਼ਨ ਕੋਲ Django ਦੀ ਡਿਫ਼ਾਲਟ ਤੋਂ ਤੋਲਣ ਵਾਲੇ ਯੂਜ਼ਰ-ਖਾਸ ਜ਼ਰੂਰਤਾਂ ਹਨ (ਅਤੇ ਭਾਵੇਂ ਉਹ ਨਹੀਂ ਭੀ ਕਰਦੇ ਲਚਕਦਾਰਤਾ ਨਾਲ ਫਾਇਦਾ ਮੁੱਖ), ਅਤੇ ਕਿਉਂਕਿ ਇਸ ਨੂੰ ਜਲਦੀ ਸਥਾਪਿਤ ਨਾ ਕਰਨ ਦੀ ਲਾਗਤ ਇੰਨੀ ਉੱਚ ਹੈ, ਕਸਟਮ ਯੂਜ਼ਰ ਮਾਡਲ ਨੂੰ ਸਮਝਨਾ — ਖਾਸ ਮਹੱਤਵ ਨਾਲ ਪ੍ਰੋਜੈਕਟ ਦੀ ਸ਼ੁਰੂ ਤੋਂ ਇੱਕ ਨੂੰ ਸਥਾਪਿਤ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ — ਮਹੱਤਵਪੂਰਣ, ਵਿਹਾਰਕ-ਨਾਜ਼ੁਕ ਗਿਆਨ ਹੈ ਜੋ ਇੱਕ ਆਮ ਅਤੇ ਗੰਭੀਰ ਪ੍ਰੋਜੈਕਟ-ਪੱਧਰ ਦੀ ਗ਼ਲਤੀ ਨੂੰ ਰੋਕਦਾ ਹੈ, ਇਸਨੂੰ Django ਅਜ਼ੀਮ-ਬਾਰ-ਹਵਾਲਾ ਨੀਤੀ ਤੇ ਸਲਾਹ ਦੀ ਇੱਕ ਵਿਕਾਸ ਕਰਦਾ ਹੈ।