【问题标题】:Error POST request on Django Rest Framework (auth_user.username)Django Rest Framework (auth_user.username) 上的错误 POST 请求
【发布时间】:2018-06-19 19:39:43
【问题描述】:

我尝试通过 POST 创建一个新用户(django 用户)

序列化器.py

from rest_framework import serializers
from .models import *
from django.contrib.auth.models import User

class UsuarioSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('email',
                  'password')

views.py:

class Registrar(mixins.CreateModelMixin, viewsets.GenericViewSet):
    serializer_class = UsuarioSerializer

urls.py:

from django.urls import path, include
from . import views
from rest_framework import routers


router = routers.DefaultRouter()
router.register('usuarios', views.UsuarioViewSet)
router.register('tecnicos', views.TecnicoViewSet)
router.register('pedidos', views.PedidoViewSet)
router.register('mispedidos', views.PedidoMiUsuarioSet)
router.register('registrar', views.Registrar, base_name = 'registro')


urlpatterns = [
    path('', include(router.urls))
]

当我发帖时,我收到此错误: UNIQUE 约束失败:auth_user.username

如果我将模型 User 更改为 Usuario...

模型.py:

class Usuario(models.Model):
    email = models.EmailField(max_length=70, blank=True, null=True, unique=True)
    password = models.TextField()

    def __str__(self):
        return self.email 

但我需要使用来自 django 的用户模型

【问题讨论】:

  • 等一下,不要通过 API 访问密码(即使这些是经过哈希处理的)!!
  • 失败的原因是,就像错误所说的那样,您已经有一个带有usernameUser

标签: django django-rest-framework django-users serialization


【解决方案1】:

用户模型中的用户名字段为必填项。

这就是为什么您必须在创建操作中使用此字段的原因。

默认情况下,电子邮件地址不是必需的。

这发生在 Django 通过 唯一 用户名创建用户。

【讨论】:

    猜你喜欢
    • 2019-11-22
    • 2021-01-19
    • 2023-01-08
    • 2016-11-06
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 2018-09-22
    • 2019-05-04
    相关资源
    最近更新 更多