Почему пользовательский запрос вызывает TypeError? - PullRequest
2 голосов
/ 17 июня 2019

У меня есть модель CustomUser в приложении Django, которую я пытаюсь запросить, но запрос вызывает TypeError: all () отсутствует 1 обязательный позиционный аргумент: 'self'

Вот моя пользовательская модель:

class CustomUser(AbstractUser):
    username = models.CharField(max_length=11, blank=True, default= 
     'newUser', verbose_name="User Group")
    email = models.EmailField(_('email address'), unique=True)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    objects = CustomUserManager

    # add additional fields in here
    display_name = models.SlugField(max_length=50, unique=True)
    phone = models.CharField(max_length=14, blank=True, help_text="XXX-XXX-XXXX")

    def __str__(self):
        return self.display_name

То, что я пытаюсь выполнить, описано в нескольких сообщениях здесь, включая этот .Итак, я пытаюсь это сделать:

>>> from django.contrib.auth import get_user_model
>>> User = get_user_model()
>>> userList = User.objects.all()

Вместо ожидаемого набора запросов я получаю ошибку, ссылающуюся на отсутствующий аргумент 'self'.Решения, которые я нашел здесь для этой ошибки, похоже, не работают;Я явно что-то упускаю.

1 Ответ

0 голосов
/ 17 июня 2019

Вы забыли создать ваш CustomUserManager с помощью , вызвав конструктор (с квадратными скобками ()):

class CustomUser(AbstractUser):

    # ...

    objects = CustomUserManager<b>()</b>
    #    call the constructor  ^^

Не делая этого, objects является просто ссылкой на класс CustomUserManager. Если вы затем вызываете .all(), вы вызываете метод класса, и этот метод действительно пропускает неявный параметр self.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...