How to extend django admin user model with new fields? - django

I want to add more fields to django built in admin user model. How can I achieve it?
Actually , There are three users on django server, student , teacher and parent. And by adding a 'role' field to user model, I can identify which type of user is log-ged in . So how can I extend the model field.
I'm expecting to identify different role of users in login.

Related

How to extend a user model without use profile method?

I want to add a column to django auth_user table. But I do not want to create a new table.
As the document peovided for extending User model, there are four ways.
proxy model
Add a oneToOne field
Creating a Custom User Model Extending AbstractUser
Creating a Custom User Model Extending AbstractBaseUser
It works some time. But How could I add a field to the auth user model it provied?

How to define type of 3 users(Teacher, Parent, Student) and login them

I am gonna create an electronic_diary for school. How to define type of 3 users(Teacher, Parent, Student) and login them.
your question is very generic, so here is a generic answer, it will help you get started:
there are two solutions:
create a user profile model and connect it to existing django user model, add user_type field there doc
create your own user model for django and add user_type field there doc
then on login and queries get user_type and change query/forms/permissions based on that
read the whole doc on this page it's good!

Custom Django Authentication

I have an model named Customers(username,password ..etc) and also an model named User(username,password...etc).
I want to create two different APIs with different authentication.
One should authenticate with the User username,password
and the second should authenticate using the Customers username,password.
Any idea on how can I do this?
Thank you!
I suggest the following options:
1.
I am assuming User model is the "real" user of your app. If this is true use the django's default User model class. It will work out of the box.
For the Customer model, make it inherit from AbstractBaseUser, this will give you password functionality out of the box and you can add other fields as per your need.
Now you can create 2 different urls for login. 1 url for user which checks in the User model and the other for the customer model. This avoids any confusion for everyone.
If you prefer a single url, you have to mention the model class along with username and password to know in which table to verify them.
2.
Create two profile models: UserProfile and CustomerProfile
Each will have a one to one relationship with the django's default User model.
Basically a User can have the profile of a "real" user or of a customer.
In this case when you are creating any User you have check if you want to attach a UserProfile or a CustomerProfile.
In this case it makes sense to just use a single login url. From the user's login information you can first fetch the user from the User table and then check if it is a customer or not by running a query in the CustomerProfile table.
I recommend you to use the django.contrib.auth.user class for your classical authentication. You can either inherit from that class or add a OneToOne relation to your own model as follows
from django.contrib.auth.models import User
class YourUser(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
For the rest of your question you should add some more details and even some pieces of your code.

Want to make an action

I have an django site for new articles , in which multiple user write articles.
I want to make an action for selecting a user , so that If I choose a particular user , I can only see its updation/insertion in admin site.
If updation/insertion is part of a model that has an foreign key to USER model, then just write an admin-inlline to show a list of them in the user page below all other fields

Add-Contacts in each user accounts django

Hey guys I have created a messanging app in django in which i have User.auth,Profile and message app which works fine. Now i need is to add contact category in every user accounts. So they can add contacts like email with there firstname and last name?
You should be able to update your Profile model to include a many-to-many relationship with other Users. Then you can access the related user models for a given profile's contacts through that profile. In the profile model:
contacts = models.ManyToManyField(User)
Set blank/null as is appropriate.