我想在auth应用程序的User模型中添加额外的功能,但我不想弄脏django源代码,或者我不想创建一个新的User模型,它扩展了User模型auth app。可能吗?如果是,那怎么样?
P.S我见过django-eav,但我希望将该功能的值永久存储在数据库中,并将其显示在管理站点中。
问题(Extending the User model with custom fields in Django)中的答案表明扩展或替换。我不想要那些
答案 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)