嗨,我正在使用django,现在我的项目模型的一部分有点令人困惑。
我需要创建一个网站,用户可以拥有自己的个人资料并发布他们想要提供的产品,如目录,我正在考虑创建这个模型:
class Users_Types(models.Model):
user_type = models.CharField(max_length=1)
def __str__(self):
return self.user_type
return self.id_type_user
class Users(models.Model):
users_types= models.OneToOneField('Users_Types')
e_mail = models.EmailField(unique=True)
password = models.TextField()
salt = models.TextField()
def __str__(self):
return self.id_user
return self.id_type_user
return self.e_mail
return self.password
return self.salt
class Clients(models.Model):
users = models.OneToOneField('Users')
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
ci = models.CharField(max_length=9)
birth_date = models.DateField(null=True, blank=True)
phone = models.CharField(max_length=20)
city = models.CharField(max_length=20, default=)
class products(models.Model):
clients = models.ForeignKey('clients')
product = models.CharField(max_length=30)
description = models.CharField(max_length=30)
Category = models.CharField(max_length=30)
但我读到关于django有它的用户模型,我不得不使用该模型而不是我的用户模型?
以及如何将django用户模型与我的客户模型相关联。
我感谢你的帮助!
答案 0 :(得分:1)
Django确实拥有它的User
模型,并且所有默认身份验证都是通过该模型进行的,从一开始我强烈建议您保留该默认的Django User
模型。
要将您的客户端与默认用户模型相关联,您需要
from django.conf import settings
from django.db import models
class Client(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
...
在Using the Django authentication system上阅读django文档对你非常有用。
我认为你知道PEP-8是什么,而django有点像pep:Coding style,它可以帮助你使你的代码更清洁。
Django docs也有关于引用用户模型的段落:Referencing the User model
答案 1 :(得分:1)
是的Django拥有自己的用户内置模块。 只需先在模型文件中导入用户
from django.contrib.auth.models import User
class UserProfile(models.Model):
users_types= models.ForeignKey(User)
e_mail = models.EmailField(unique=True)
password = models.TextField()
class Clients(models.Model):
user = models.ForeignKey(User)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
ci = models.CharField(max_length=9)
birth_date = models.DateField(null=True, blank=True)
phone = models.CharField(max_length=20)
city = models.CharField(max_length=20, default=)
您可以通过
获取用户 user = User.objects.get(id=request.user.id)
request.user包含您登录的用户。 您也可以通过
获取客户信息 client_obj = Clients.objects.get(user=request.user)
谢谢