2014-09-21 2 views
0

Является ли мой способ расширения auth.models.User django правильно? следует ли унаследовать от AbstractUser или User? Вот как я его реализую сейчас: но должен ли я рассмотреть возможность подключения OneToOneField к таблице User из UserProfile?Расширение 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

вы только наследовать от AbstractUser, когда вам необходимо изменить существующую модель пользователя, что Джанго обеспечивает, и я не вижу ничего в коде, который нужно будет что.

кроме этого я не думаю, что унаследовать от пользователя - хорошая идея. вы должны унаследовать от моделей. Как обычно, и для пользователя OneToOneField.

проверить это онлайн книгу для более руководств: http://www.tangowithdjango.com/book/chapters/login.html