Combining models within a single page in the admin page - django

I have a User class, and each user has a PersonalInformation model and a Profile model.
In my admin panel I have:
AUTHENTICATION AND AUTHORIZATION
Users
Groups
USERS
Profiles
Personal Informations
Users have a ONE-ONE relationship with 'PersonalInformation' and 'Profile', but the two models do not have a relationship.
So I can view the Users, the PersonalInformation and Profile models separately, but I want to join them so I can view all one users information on one page.
Thank you.

Related

Django - How to make admin not have own profile model

How to make the admin not have a profile created. I have a Profile, Relationships one to one model and want to exclude admin.

How to extend django admin user model with new fields?

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.

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.

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.

Django permisson on rows depending one or more fields content

Use case:"
I have a the standard user model that have a Userprofile model that contains among others the field region that is a ForeignKey to the Region model.
Users can be in permission groups that are standard for Django.
In django-admin user model page the user kalle in the site-admin group can see all users. The user pelle is in the regionA1-admin group can see all users who have their userprofile region set to regionA1."
What is the best practice in django to handle this use case in a secure way?
And it could be other models than User. Regions can be added and deleted. Region is used in this case but could be one or more fields that form the criteria. This shall only apply to the django-admin interface and not when interacting with the database on the regular site.