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.
Related
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.
Hello I am new to programming and learning.
I am having some problem in decision making for the user model in Django.
Below is the description of my project which i want to do. Please suggest me the best way to go about it.
I will have an ecommerce application where customer, shop owner, shop staff and shop delivery man will interact each other and will have the following profiles
Individual User profile (register with email as username)
Grocery Shop profile ( there will be many grocery shops who will register as shop on the application and will have a bit of admin site for the shop)
Shop staffs profile ( working under the shop admin)
Delivery man profile ( working under the shop admin)
Super admin for the project
Admin profile for the entire application with some privileges.
The way i want to operate is that each user will register using email as user name and by default will have a user profile.
Later suppose a user have a shop and want to register on our app (in another word if anybody want to register his shop, he need to register as a user and then apply/register for shop). At this point, if the user register his shop then he will have another Shop profile in his user admin panel.
Same way a user want to work as staff on that shop, so he can join to the shop which will be shown on the shop admin. The shop staff will have a extra staff profile in his user admin panel.
Same way, the delivery man will join and having is delivery man profile as well.
Please suggest me how to go about it for the user model, authentication and permission in Django.
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.
I'm new to Django, and I'm trying to build an app where a user can post a "trip" (while logged in with django-allauth, facebook social account) and I want that trip model to be tied into the social account of the user whom created it.
I'm having problems saving the trip to the database. I've had to modified the inputted data with Javascript so I'm using an ajax POST request, and I grab the user's social id with <p class="social-id">{{ user.socialaccount_set.all.0.uid }}</p>
My model is:
class Trip(models.Model):
driver = models.OneToOneField(allauth.socialaccount.models.SocialAccount)
and I get an error that says: Cannot assign "'10206730564687878'": "Trip.driver" must be a "SocialAccount" instance.I tried making the model driver field reference the allauth.socialaccount.models.SocialAccount.uid but that didn't work either.
You are using a OneToOneField. Can every user only post one trip? If you want them to be able to post more than one, you should use a ForeignKey() instead.
Also, is there a reason you are linking it to the SocialAccount instance, instead of to the main User instance? I would use
class Trip(models.Model):
driver = models.ForeignKey(User, models.CASCADE, related_name='trips')
Now, the reason you are getting the error is, because you are trying to assign a str (text string) to the OneToOneField field. But that field expects an instance of SocialAccount.
To fix it, instead of doing trip.driver = "10206730564687878", you would need to fetch an instance of SocialAccount (for example for the current user) and then assign that to the driver:
soc_acc = SocialAccount.objects.get(user=request.user)
trip.driver = soc_acc
trip.save()
That would give a SocialAccount instance to trip.driver.
And another thing: if it is the logged in user who adds himself, there is no need to send any SocialAccount ID with the form. Rather, get it from request.user object of the logged in user.
I am using Django 1.7.
I need to develop a user registration model in which at the time of registration, user will have to enter an employer also along with username, email and password. The employer name should be there in the database. Besides the custom user model, I am using another model named employer.
What would be the best way to implement this through a custom registration?
the cleanest way, using OneToOneField(User)
class Employee(models.Model):
user = models.OneToOneField(User)
//here goes your others employee attributes
So when you create your user model,also create its employee instance.