首页 > 解决方案 > Django Rest Framework (auth_user.username) 上的错误 POST 请求

问题描述

我尝试通过 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')

视图.py:

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

网址.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))
]

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

如果我将模型用户更改为 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 的用户模型

标签: djangodjango-rest-frameworkdjango-usersserialization

解决方案


用户模型中的用户名字段是必需的。

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

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

它通过唯一的用户用户名发生在 Django 创建用户上。


推荐阅读