我可以将我的客户模型与Django用户模型链接起来吗?

时间:2017-06-03 10:36:29

标签: python django django-models

嗨,我正在使用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用户模型与我的客户模型相关联。

我感谢你的帮助!

2 个答案:

答案 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)

谢谢