无法在Django中创建自定义用户模型

龙尼可

我有一个自定义的无密码用户模型,内置于Django 1.11中。用户模型如下所示

class User(models.Model):
    email = models.EmailField(primary_key=True)
    REQUIRED_FIELDS = []
    USERNAME_FIELD = 'email'
    is_anonymous = False
    is_authenticated = True

这是一个自定义用户模型,并依赖于自定义auth后端,如下所示

class PasswordlessAuthenticationBackend():
    def authenticate(self, uid):
        try:
            token = Token.objects.get(uid=uid)
            return User.objects.get(email=token.email)
        except User.DoesNotExist:
            return User.objects.create(email=token.email)
        except Token.DoesNotExist:
            return None

    def get_user(self, email):
        try:
            return User.objects.get(email=email)
        except User.DoesNotExist:
            return None

身份验证已注册并且可以正常工作。令牌就是这个

class Token(models.Model):
    email = models.EmailField()
    uid = models.CharField(default=uuid.uuid4, max_length=40)

问题是,当我尝试调用auth.loginmy时TestCase,它总是抛出此错误:

ValueError: The following fields do not exist in this model or are m2m fields: last_login

什么是m2m字段?如何以及在哪里指定last_login

编辑:

测试失败看起来像这样:

from django.test import TestCase
from django.contrib.auth import get_user_model
from django.contrib import auth
from accounts.models import Token

User = get_user_model()
email = '[email protected]'

class UserModelTestcase(TestCase):
    def test_user_is_valid_with_email_only(self):
        user = User(email=email)
        user.full_clean()
    
    def test_email_is_primary_key(self):
        user = User(email=email)
        self.assertEqual(user.pk,email)

    def test_links_user_with_auto_generated_uid(self):
        token1 = Token.objects.create(email=email)
        token2 = Token.objects.create(email=email)
        self.assertNotEqual(token1.uid, token2.uid)
    
    def test_no_problem_with_auth_login(self):
        user = User.objects.create(email=email)
        user.backend = ''
        request = self.client.request().wsgi_request
        auth.login(request, user) #should not raise, fails!
Okkie

此链接关于Django自定义身份验证和登录的错误?

对您的问题有深入的解释,可以选择多种解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Django中创建自定义用户模型的指南

无法在Django中验证自定义用户模型

使用自定义用户模型成功创建超级用户后无法登录django admin

Django rest 自定义用户模型创建失败

使用Django auth UserAdmin创建自定义用户模型

django 1.9不为自定义用户模型创建表

Django Rest Framework:在模型中创建自定义方法后,字段无法创建或更新

1.8中的Django自定义用户模型

从自定义Django用户模型中删除密码

我应该怎么做扩展 django 基本用户模型或创建自定义用户模型?

Django自定义用户模型

Django(1.6)自定义用户模型

如何自定义 Django 用户模型?

自定义 Django 用户模型

创建/编辑/删除用户时,Django管理面板中的FOREIGN KEY约束失败。(使用自定义用户模型。)

Django创建自定义模型字段

在 Django 中创建自定义用户类

无法在Django 3中验证自定义用户

自定义用户模型中的EmbeddedModelField

在django 1.8中将数据从原始用户模型迁移到自定义用户模型

如何使用Django Rest框架和自定义用户模型创建新用户

在Django中创建自定义用户模型时,从models.Model和AuthUser继承之间有何区别?

如何在使用自定义用户模型时修复django admin中的“无法解压不可迭代的NoneType对象”错误

我无法通过自定义用户模型的 django Rest allauth 框架中额外字段的所有值

Django 自定义用户模型,无法登录到 Django 管理面板

Django 2.1模型导入自定义用户模型

使用自定义用户模型的Django用户注册

Django 模型中的自定义 ID

在Django中使用自定义用户模型总是在模板中返回匿名用户