什么时候在Django中使用“AbstractBaseUser”?

时间:2014-11-20 21:30:07

标签: python django django-models

当我向AbstractBaseUser模型提供任何字段时,这两者之间的区别是什么?User的目的是什么?哪一个最好与python-social-auth一起使用?

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()

1 个答案:

答案 0 :(得分:3)

AbstractUserUser模型的子类。因此,单个模型将包含本地User字段以及您定义的字段。

将字段指定为等于User,即user=models.ForeignKey(User)正在创建从一个模型到User模型的连接。

您可以使用其中任何一种,但django的推荐方法是创建连接,因此使用=> user=models.ForeignKey(User)

子类的正确模型是django.contrib.auth.models.AbstractUser,如文档中所述:

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