gpt4 book ai didi

python - 属性错误 : 'Manager' object has no attribute 'get_by_natural_key' error in Django?

转载 作者:太空狗 更新时间:2023-10-29 17:01:22 25 4
gpt4 key购买 nike

我正在使用 Django '1.5c1'。我的 settings.py 中有这一行:

AUTH_USER_MODEL = 'fileupload.galaxyuser'

这是我的 Galaxyuser 模型:

class GalaxyUser(models.Model):
id = models.IntegerField(primary_key=True)
create_time = models.DateTimeField(null=True, blank=True)
update_time = models.DateTimeField(null=True, blank=True)
email = models.CharField(max_length=765)
password = models.CharField(max_length=120)
external = models.IntegerField(null=True, blank=True)
deleted = models.IntegerField(null=True, blank=True)
purged = models.IntegerField(null=True, blank=True)
username = models.CharField(max_length=765, blank=True)
form_values_id = models.IntegerField(null=True, blank=True)
disk_usage = models.DecimalField(null=True, max_digits=16, decimal_places=0, blank=True)
class Meta:
db_table = u'galaxy_user'

我想从 Galaxyuser 模型进行身份验证。但是,当我登录时出现此错误:

AttributeError: 'Manager' object has no attribute 'get_by_natural_key'

我做错了什么?

编辑: 回溯:

Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "/home/zurelsoft/workspace/genalytics/fileupload/backend.py" in login_backend
26. user = authenticate(username=username, password=password)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/auth/__init__.py" in authenticate
59. user = backend.authenticate(**credentials)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/auth/backends.py" in authenticate
16. user = UserModel.objects.get_by_natural_key(username)

Exception Type: AttributeError at /login_backend/
Exception Value: 'Manager' object has no attribute 'get_by_natural_key'

最佳答案

您已经创建了一个新的用户模型,但您还没有为该模型指定一个经理。如果您还不熟悉 Django 中的管理器,我建议您阅读 documentation on that第一的。正如 Django 1.5 所说( source ):

You should also define a custom manager for your User model. If your User model defines username and email fields the same as Django's default User, you can just install Django's UserManager; however, if your User model defines different fields, you will need to define a custom manager that extends BaseUserManager providing two additional methods: create_user() and create_superuser().

简而言之,如果您的模型使用与 Django 的 User 模型相同的用户名和电子邮件字段,那么您可以这样写:

from django.contrib.auth.models import UserManager

class GalaxyUser(models.Model):
id = models.IntegerField(primary_key=True)
create_time = models.DateTimeField(null=True, blank=True)
update_time = models.DateTimeField(null=True, blank=True)
email = models.CharField(max_length=765)
password = models.CharField(max_length=120)
external = models.IntegerField(null=True, blank=True)
deleted = models.IntegerField(null=True, blank=True)
purged = models.IntegerField(null=True, blank=True)
username = models.CharField(max_length=765, blank=True)
form_values_id = models.IntegerField(null=True, blank=True)
disk_usage = models.DecimalField(null=True, max_digits=16, decimal_places=0, blank=True)

objects = UserManager()

class Meta:
db_table = u'galaxy_user'

或者,您需要继承 BaseUserManager(也在 django.contrib.auth.models 中)并实现所需的方法。然后,您需要将其分配给模型的 objects 变量。

关于python - 属性错误 : 'Manager' object has no attribute 'get_by_natural_key' error in Django?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14723099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com