Django:在auth App的User模型中添加额外功能

时间:2016-09-02 13:22:52

标签: python django

我想在auth应用程序的User模型中添加额外的功能,但我不想弄脏django源代码,或者我不想创建一个新的User模型,它扩展了User模型auth app。可能吗?如果是,那怎么样?

P.S我见过django-eav,但我希望将该功能的值永久存储在数据库中,并将其显示在管理站点中。

问题(Extending the User model with custom fields in Django)中的答案表明扩展或替换。我不想要那些

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点,但我建议继承Django的抽象用户模型。例如:

from django.contrib.auth.models import AbstractUser
from django.db import models
from django.utils.translation import ugettext_lazy as _

class KarmaUser(AbstractUser): 
    karma = models.PositiveIntegerField(default=0, blank=True)

# Inside project/settings.py
AUTH_USER_MODEL = "profiles.KarmaUser"

此处有更多信息:https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#specifying-a-custom-user-model

或者您可以尝试使用OneToOneField链接回用户模型,例如:

from django.conf import settings

class CustomProfile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    karma = models.PositiveIntegerField(default=0, blank=True)