用户查询为什么触发TypeError?

时间:2019-06-17 19:04:29

标签: django python-3.x typeerror

我正在尝试查询的Django应用中有一个CustomUser模型,但是查询引发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

我试图完成的工作在此处的几篇文章中得到了介绍,包括this one。所以,我试试这个:

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

我没有得到期望的查询集,而是引用了缺少的“自我”参数的错误。我在这里为该错误找到的解决方案似乎不起作用;显然我遗漏了一些东西。

1 个答案:

答案 0 :(得分:0)

您忘记了通过调用构造函数(带有括号CustomUserManager)来创建您的()

class CustomUser(AbstractUser):

    # ...

    objects = CustomUserManager()
    #    call the constructor  ^^

通过不这样做,objects只是对CustomUserManager类的引用。如果再调用.all(),则会调用类方法,并且该方法确实缺少隐式的self参数。