Một custom user model thay thế User mặc định của Django để phù hợp nhu cầu ứng dụng của bạn — thêm field, thay đổi định danh đăng nhập (vd: email thay vì username), hoặc tùy biến hành vi. Lời khuyên then chốt, hay được nhắc lại: thiết lập một custom user model ngay từ đầu của một dự án, dù bạn chưa cần thay đổi, vì thay đổi nó về sau cực kỳ đau đớn.
Tại sao: User mặc định bị giới hạn và khó thay đổi về sau
User mặc định có các field cố định (username, email, first/last name) và dùng
USERNAME làm field đăng nhập. Các app thực thường cần:
✓ Đăng nhập dựa trên email (không username)
✓ Field bổ sung (phone, avatar, role, preferences) ngay trên user
✓ Hành vi xác thực tùy biến
