An Interest In:
Web News this Week
- March 21, 2024
- March 20, 2024
- March 19, 2024
- March 18, 2024
- March 17, 2024
- March 16, 2024
- March 15, 2024
May 29, 2021 06:46 am GMT
Original Link: https://dev.to/kritebh/how-to-extend-user-model-in-django-e9g
How to extend User Model in Django
In the previous post, I discussed how you can create a custom User model in Django but what if you don't want to create a custom one.
In that case, You can just extend the User model with a OneToOne model relationship.
- We can easily add another field such as Location, Date of Birth etc.
Create a Django Project
Setup your Virtual environment and create a Django Project.
Note - Set up code is available at previous post.
Extending User Model
Import the User model from "django.contrib.auth.models" and we will create another model which will relate to this User model
from django.db import modelsfrom django.contrib.auth.models import Userfrom django.db.models.base import Modelfrom django.db.models.deletion import CASCADE# Create your models here.class ExtendUser(models.Model): r = models.OneToOneField(User,on_delete=models.CASCADE) date_of_birth = models.DateField(null=True) city = models.CharField(max_length=30) def __str__(self): return self.r.username
Add this model to the admin.py
Showing Data
Now the question is how we can access this data and show it at the frontend.
It's easy..
In views.py file I have created a single function which will send the data as context.
def home(request): data = request.user return render(request,'core/index.html',{'data':data})
Now in index.html you can access this data
<p>{{data.username}}</p><p>{{data.extenduser.city}}</p><p>{{data.extenduser.date_of_birth}}</p>
Cons
- By this method, you can't change the primary login method which is username.
Here is the GitHub repo for the code
kritebh / extend-user-model-django
How to extend User model in Django
Original Link: https://dev.to/kritebh/how-to-extend-user-model-in-django-e9g
Share this article:
Tweet
View Full Article
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To