Список контактов на пользователя при расширении AbstractUser - PullRequest
0 голосов
/ 15 марта 2020

Я хочу создать пользовательскую модель пользователя с некоторыми дополнительными полями, среди которых список контактов других пользователей. Я хотел бы расширить 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

Ошибка полностью имеет смысл, но как правильно этого добиться?

1 Ответ

0 голосов
/ 15 марта 2020

Я нашел решение, просто покопавшись в 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...