2014-09-21 46 views
0

是我擴展django的auth.models.User正確的方法嗎?我應該繼承AbstractUser還是User? 下面是我現在實現它的方式:但是我應該考慮將OneToOneField從UserProfile連接到User表嗎?用更多的屬性擴展django auth.models.User

from django.contrib.auth.models import User 

PHONE_LENGTH = 13 
NAME_LENGTH = 100 


########################### 
### User Profile 
########################### 
class UserProfile(User): 
    """ inherits from AbstractUser in Django - mainly used for authentication""" 
    # other fields here 
    phone = models.CharField(max_length=PHONE_LENGTH) #optional 
    mobile = models.CharField(max_length=PHONE_LENGTH) #requried 

    # foreign key 
    subscription_type = models.ForeignKey(SubscriptionType) 

    def __str__(self): 
     return "%s's profile" % self.user 

回答

2

當你需要改變現有的用戶模型Django提供,我沒有看到你的代碼,任何需要,你只能從AbstractUser繼承。

除此之外,我不認爲繼承自用戶是一個好主意。 你應該像往常一樣繼承models.Model並且有一個OneToOneField給用戶。

查看此在線書籍以獲取更多指導: http://www.tangowithdjango.com/book/chapters/login.html