如何在Django用户模型中添加字段?

时间:2015-08-04 12:38:43

标签: django django-models

我的项目中有三种不同类型的用户。 这三个模型具有OneToOneField和User模型。

在许多情况下,我想弄清楚用户是哪三种类型。 有快速的方法吗?

我想在用户模型中添加一个字段,但不确定如何做到这一点。

3 个答案:

答案 0 :(得分:0)

要使用额外字段扩展User模型,您可以使用AbstractUser模型。这将为您提供Userusername等所有email字段。然后,在MyUser模型中添加所有额外字段。

您需要执行以下操作:

<强> models.py

from django.contrib.auth.models import AbstractUser

class MyUser(AbstractUser):
   my_extra_field = .. # your extra field

这将在User模型中提供所有my_extra_field字段以及名为MyUser的额外字段。

答案 1 :(得分:0)

您可以实施django.contrib.auth.models.User界面,举例django.contrib.auth.models.AnonymousUser扩展django.contrib.auth.models.User

https://docs.djangoproject.com/en/1.8/ref/contrib/auth/#django.contrib.auth.models.AnonymousUser

答案 2 :(得分:0)

如果你想添加一个类型的用户选择,我会尝试这样的事情:https://docs.djangoproject.com/en/1.8/ref/models/fields/#choices

class Student(models.Model):
    FRESHMAN = 'FR'
    SOPHOMORE = 'SO'
    JUNIOR = 'JR'
    SENIOR = 'SR'
    YEAR_IN_SCHOOL_CHOICES = (
        (FRESHMAN, 'Freshman'),
        (SOPHOMORE, 'Sophomore'),
        (JUNIOR, 'Junior'),
        (SENIOR, 'Senior'),
    )
    year_in_school = models.CharField(max_length=2,
                                      choices=YEAR_IN_SCHOOL_CHOICES,
                                      default=FRESHMAN)

    def is_upperclass(self):
        return self.year_in_school in (self.JUNIOR, self.SENIOR)