2012-03-12 145 views
5

目前我使用我的自定義列(如地址和電話號碼)創建了另一個類/表MyAppUser,該列具有Django身份驗證User的外鍵。將自定義字段添加到Django中的auth_user表中

像這樣的事情

from django.db import models 
from django.contrib.auth.models import User 

class MyAppUser(models.Model) : 
    def __unicode__(self) : 
     return self.user.username 

    user = models.ForeignKey(User) 
    comment = models.TextField(blank = True) 
    phone = models.CharField(max_length = 135, blank = True) 

是上述方法中的好的做法呢?或者我應該嘗試直接修改auth_user?如果是這樣,我該怎麼做?

紅利問題:有沒有辦法讓我的自定義表格也被稱爲User?我想過嘗試from django.contrib.auth import models,然後打電話models.User,但我認爲這也會與django.db.models相沖突。也許我需要嘗試from django.contrib.auth.models import User as AuthUser?這是一個好主意嗎?

回答

8

Django提供了內置的支持來擴展用戶自己的屬性,稱爲User Profiles。概述瞭如何設置它的概要here

+0

django文檔已更新。所以到'​​用戶個人資料'的鏈接是https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users – crossin 2013-09-25 07:11:49

+0

鏈接返回502 :( – 2017-07-14 14:57:55

1

這通常是我喜歡的方法,我不喜歡爲了安全起見而接觸Django用戶。這樣你就知道你不會和用戶模型中的任何東西發生衝突,並且它清楚地知道哪些代碼是框架代碼,哪些是你的代碼。

我通常不稱之爲MyAppUser,但更常見的是類似UserSettings。我不希望我的用戶相關類被替換爲User對象的替代品,但只是提供更多信息。

通常在應用程序中您將擁有遍及各地的User的外鍵,所以我仍然使用Django User類。我發現它讓事情更清潔。

我試圖子類User,發現它並沒有給我太多,最終導致了混亂的事情,超過了他們的需要。

相關問題