2017-06-03 30 views
3

嗨即時新使用Django,現在有點混淆模型的一部分我的項目。我可以將我的客戶模型與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用戶模型與我的客戶端模型鏈接起來。

我感謝您的幫助!

回答

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文檔有大約引用到用戶模式的段落:Referencing the User model

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) 

謝謝

相關問題