2014-11-20 59 views
3

這兩個有什麼區別,AbstractBaseUser什麼時候可以給User模型提供任何字段?哪一個更適合用於python-social-auth什麼時候在Django中使用「AbstractBaseUser」?

class User(models.Model): 
    username = models.CharField(max_length=50) 
    is_active = models.BooleanField(default=True) 
    full_name = models.CharField(max_length=100) 
    date_of_birth = models.DateField() 

class MyUser(AbstractBaseUser): 
    username = models.CharField(max_length=50) 
    is_active = models.BooleanField(default=True) 
    full_name = models.CharField(max_length=100) 
    date_of_birth = models.DateField() 

回答

2

AbstractUser子類User模型。因此,該單一模型將具有本地User字段以及您定義的字段。

將字段賦值等於Useruser=models.ForeignKey(User)正在創建從一個模型到User模型的連接。

您可以使用一個,但Django的推薦的方法是創建一個連接,因此使用=>user=models.ForeignKey(User)

正確的模型sublclass是django.contrib.auth.models.AbstractUser這裏在文檔中指出:

https://docs.djangoproject.com/en/1.6/topics/auth/customizing/#extending-django-s-default-user

+0

我認爲你的意思是'AbstractUser'而不是'AbstractBaseUser'。但我明白了。謝謝。 – norbertpy 2014-11-20 21:55:21

+0

@norbertpy我添加了一個編輯鏈接到文檔。謝謝你指出。 – 2014-11-21 01:37:38

+0

在這裏重要的是瞭解'AbstractUser'和'AbstractBaseUser'之間的區別,如[在這個答案]中解釋的(http://stackoverflow.com/questions/21514354/difference-between-abstractuser-and-abstractbaseuser-in-django #21514469)。 – 2017-03-03 12:39:58