Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
User Model Overview in Django
📖 Scenario: You are building a simple Django app that manages users. You want to understand how to create and configure a basic user model to store user information.
🎯 Goal: Build a basic Django user model with fields for username, email, and date joined.
📋 What You'll Learn
Create a Django model named User
Add fields username, email, and date_joined with correct field types
Set username as a unique field
Use Django's models.Model as the base class
💡 Why This Matters
🌍 Real World
User models are essential in web apps to store and manage user data like login info and profiles.
💼 Career
Understanding Django models is key for backend web development roles working with Python and Django frameworks.
Progress0 / 4 steps
1
Create the User model class
Create a Django model class called User that inherits from models.Model.
Django
Hint
Use class User(models.Model): to start your model.
2
Add username and email fields
Inside the User model, add a username field as models.CharField with max_length=150 and unique=True. Also add an email field as models.EmailField.
Django
Hint
Use models.CharField for username with max_length=150 and unique=True. Use models.EmailField for email.
3
Add date_joined field
Add a date_joined field to the User model using models.DateTimeField with auto_now_add=True to store when the user joined.
Django
Hint
Use models.DateTimeField(auto_now_add=True) to automatically set the join date.
4
Add string representation method
Add a __str__ method to the User model that returns the username as a string.
Django
Hint
Define def __str__(self): and return self.username.
Practice
(1/5)
1. What is the primary purpose of Django's built-in User model?
easy
A. To manage static files like CSS and JavaScript
B. To handle database migrations automatically
C. To create HTML templates for user profiles
D. To store and manage user accounts including authentication
Solution
Step 1: Understand the role of the User model
The User model in Django is designed to handle user accounts, including login and authentication.
Step 2: Compare options with User model functions
Options B, C, and D relate to other Django features, not user management.
Final Answer:
To store and manage user accounts including authentication -> Option D
Quick Check:
User model = user account management [OK]
Hint: User model = user accounts and login management [OK]
Common Mistakes:
Confusing User model with template or static file handling
Thinking User model manages database migrations
Assuming User model creates HTML pages
2. Which of the following is the correct way to import Django's default User model?
easy
A. from django.contrib.auth.models import User
B. import django.auth.User
C. from django.models import User
D. from django.contrib.auth import UserModel
Solution
Step 1: Recall the correct import path for User
Django's default User model is located in django.contrib.auth.models.
Step 2: Check each option's syntax
from django.contrib.auth.models import User matches the correct import syntax. Options A, C, and D are incorrect or invalid imports.
Final Answer:
from django.contrib.auth.models import User -> Option A
Quick Check:
Correct import path = from django.contrib.auth.models import User [OK]
Hint: User model is in django.contrib.auth.models [OK]
Common Mistakes:
Using incorrect module paths
Trying to import User directly from django.models
Confusing User with UserModel
3. What will be the output of this code snippet?
from django.contrib.auth.models import User
user = User.objects.create_user(username='alice', password='pass123')
print(user.is_active)
medium
A. False
B. None
C. True
D. Raises an error
Solution
Step 1: Understand create_user default behavior
The create_user method creates a user with is_active set to True by default.
Step 2: Check the printed attribute
Printing user.is_active will output True unless explicitly changed.
Final Answer:
True -> Option C
Quick Check:
Default is_active = True [OK]
Hint: create_user sets is_active True by default [OK]
Common Mistakes:
Assuming is_active is False by default
Expecting None or error without context
Confusing create_user with create_superuser
4. Identify the error in this code snippet that tries to create a user:
from django.contrib.auth.models import User
user = User.objects.create(username='bob', password='secret')
medium
A. Username must be an email address
B. Using create() instead of create_user() for password hashing
C. Password field cannot be set during user creation
D. Missing import for User model
Solution
Step 1: Check method used for user creation
The create() method does not hash passwords; create_user() should be used instead.
Step 2: Analyze the impact of using create()
Using create() stores the password as plain text, which is insecure and incorrect.
Final Answer:
Using create() instead of create_user() for password hashing -> Option B
Quick Check:
Use create_user() to hash passwords [OK]
Hint: Use create_user() to hash passwords, not create() [OK]
Common Mistakes:
Using create() which stores raw passwords
Forgetting to import User
Thinking username must be email
5. You want to extend Django's default User model to add a 'birth_date' field. Which approach is recommended?
hard
A. Create a separate model with OneToOneField to User and add birth_date there
B. Directly add birth_date field to the built-in User model
C. Override User model by copying all fields and adding birth_date
D. Add birth_date as a global variable in settings.py
Solution
Step 1: Understand Django's recommended user extension
Django suggests extending User by creating a profile model linked with OneToOneField.
Step 2: Evaluate options for adding fields
Directly modifying built-in User or copying it is discouraged; settings.py cannot hold model fields.
Final Answer:
Create a separate model with OneToOneField to User and add birth_date there -> Option A
Quick Check:
Extend User via OneToOneField profile model [OK]
Hint: Extend User with OneToOneField profile model [OK]