【问题标题】:Why is user query triggering TypeError?为什么用户查询会触发 TypeError?
【发布时间】:2019-10-31 09:47:40
【问题描述】:

我在尝试查询的 Django 应用中有一个 CustomUser 模型,但查询引发 TypeError: all() missing 1 required positional argument: '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()

我得到错误引用缺少的“self”参数,而不是预期的查询集。我在这里找到的针对该错误的解决方案似乎不起作用;显然我错过了一些东西。

【问题讨论】:

  • 你没有创建你的CustomUserManager:objects = CustomUserManager()

标签: django python-3.x typeerror


【解决方案1】:

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

class CustomUser(AbstractUser):

    # ...

    objects = CustomUserManager()
    #    call the constructor  ^^

如果不这样做,objects 只是对CustomUserManager 类的引用。如果然后调用.all(),则调用类方法,而该方法确实缺少隐式self 参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-23
    • 2020-01-09
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多