首页 > 解决方案 > 扩展 AbstractUser 时每个用户的联系人列表

问题描述

我想创建一个带有一些额外字段的自定义用户模型,其中包括其他用户的联系人列表。我想扩展AbstractUser而不是创建一个具有一对一链接的新模型User

from django.contrib.auth import get_user_model
from django.contrib.auth.models import AbstractUser
from django.db import models


class CustomUser(AbstractUser):
    a_custom_field = models.IntegerField(default=0)

    # per-user contact list
    contacts = models.ManyToManyField(get_user_model())

此代码不起作用。在 makemigrations 期间抛出此错误。

django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'users.CustomUser' that has not been installed

这个错误完全有道理,但实现这一目标的正确方法是什么?

标签: djangodjango-models

解决方案


我只是通过深入研究 django 文档找到了解决方案。get_user_model()问题是在创建用户模型之前我无法使用。解决方案是使用类名作为字符串。所以,这段代码很好用:

from django.contrib.auth import get_user_model
from django.contrib.auth.models import AbstractUser
from django.db import models


class CustomUser(AbstractUser):
    a_custom_field = models.IntegerField(default=0)

    # per-user contact list
    contacts = models.ManyToManyField('CustomUser')

推荐阅读