- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Python 3.2.3 上使用 Django 1.5。
当我运行python3 manage.pysyncdb
时,它会构建数据库表,并询问我的电子邮件(定义为唯一的而不是用户名),然后当我输入该电子邮件时,我得到这个错误--
AttributeError:“Manager”对象没有属性“get_by_natural_key”
奇怪的是,它无论如何都会创建表格,但现在我很困惑,因为我真的不明白我应该做什么。文档说我应该创建一个 Custom User Manager ,但这就是它真正说的。它没有给我任何在哪里创建它或如何创建它的线索。我翻阅了docs on Managers ,但这确实没有帮助我弄清楚任何事情。这一切都太模糊了。我一直在谷歌上搜索,试图找到一些关于我需要做什么的线索,但我只是对越来越多的问题而不是任何答案感到疯狂。这是我的 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_user
和 create_superuser
方法。请参阅docs .
关于django - 属性错误: 'Manager' object has no attribute 'get_by_natural_key' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16530216/
我知道有类似的问题,我尝试了这些问题中提到的所有解决方案。这是我的问题描述; 当我执行 createsuperuser 时,出现如下错误; AttributeError: 'Manager' obje
我在 Python 3.2.3 上使用 Django 1.5。 当我运行python3 manage.pysyncdb时,它会构建数据库表,并询问我的电子邮件(定义为唯一的而不是用户名),然后当我输入
我在为使用 ContentType 外键的模型加载外部数据装置时遇到问题。 我在模型中使用管理器,就像文档所说的那样。不幸的是,尽管文档讨论了 ContentType 外键上的 get_by_natu
我正在使用 Django '1.5c1'。我的 settings.py 中有这一行: AUTH_USER_MODEL = 'fileupload.galaxyuser' 这是我的 Galaxyuser
我正在尝试创建用户登录。但是当我登录时,我收到错误消息: TypeError: get_by_natural_key() takes exactly 3 arguments (2 given) The
我使用的是 Django 版本 1.11.3 和 djangorestframework 版本 3.6.3。在创建 super 用户阶段使用以下命令: python manage.py creates
我是一名优秀的程序员,十分优秀!