Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 属性错误:';经理';对象没有属性';通过“自然”键获取';_Django_Django Models - Fatal编程技术网

Django 属性错误:';经理';对象没有属性';通过“自然”键获取';

Django 属性错误:';经理';对象没有属性';通过“自然”键获取';,django,django-models,Django,Django Models,我正在Python3.2.3上使用Django 1.5 当我运行python3 manage.py syncdb时,它会构建数据库表,并请求我的电子邮件(定义为唯一的,而不是用户名),然后当我输入时,我会收到此错误-- AttributeError:'Manager'对象没有属性“按自然键获取” 奇怪的是,它创建了表格,但现在,我很困惑,因为我真的不明白我该做什么。文档上说我应该创建一个,但它实际上只说了这么多。它没有给我一个线索,在哪里创建它或如何创建它。我仔细看了一遍,但这并没有帮我弄明白什

我正在Python3.2.3上使用Django 1.5

当我运行
python3 manage.py syncdb
时,它会构建数据库表,并请求我的电子邮件(定义为唯一的,而不是用户名),然后当我输入时,我会收到此错误--

AttributeError:'Manager'对象没有属性“按自然键获取”

奇怪的是,它创建了表格,但现在,我很困惑,因为我真的不明白我该做什么。文档上说我应该创建一个,但它实际上只说了这么多。它没有给我一个线索,在哪里创建它或如何创建它。我仔细看了一遍,但这并没有帮我弄明白什么。这太模糊了。我一直在谷歌上搜索,试图找到一些关于我需要做什么的线索,但我只是被越来越多的问题而不是答案弄疯了。这是我的models.py文件:

from django.db import models
from django.contrib.auth.models import AbstractBaseUser

class MyUsr(AbstractBaseUser):
    email = models.EmailField(unique=True,db_index=True)
    fname = models.CharField(max_length=255,blank=True, null=True)
    surname = models.CharField(max_length=255,blank=True, null=True)
    pwd_try_count = models.PositiveSmallIntegerField(blank=True, null=True)
    pwd_last_try = models.DateTimeField(blank=True, null=True)
    resetid = models.CharField(max_length=100,blank=True, null=True)
    last_reset = models.DateTimeField(blank=True, null=True)
    activation_code = models.CharField(max_length=100,blank=True, null=True)
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['fname','activation_code']

如何编写自定义用户管理器?我是否将它作为一种方法放在MyUsr模型中?或者这就是我应该做的?我应该做些完全不同的事情吗?在这一点上我什么都不确定。我只是不明白。关于这一点的文档对我来说似乎并不清楚,留下了很多有待解释的地方。我是Django的新手,但我已经接触Python好几个月了。

通过对BaseUserManager进行子分类,并在模型中将其分配给objects属性,来定义自定义管理器

from django.contrib.auth.models import AbstractUser, BaseUserManager

class MyMgr(BaseUserManager):
    def create_user(...):
        ...

    def create_superuser(...):
        ...


class MyUsr(AbstractBaseUser):
    objects = MyMgr()

    email = models.EmailField(unique=True, db_index=True)
    fname = models.CharField(max_length=255, blank=True, null=True)
    ...

必须为
BaseUserManager
定义
create\u user
create\u superuser
方法。请参阅。

谢谢!这个问题让我有一段时间很为难。无论我在哪里都找不到线索。如果你直接将
UserManager
子类化,你已经实现了这些方法@考蒙斯:你的评论很有帮助!谢谢;)