Search code examples
djangodjango-rest-frameworkdjango-usersserialization

Error POST request on Django Rest Framework (auth_user.username)


I try to create a new user (django user) via POST with

serializers.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))
]

When i make a post i get this error: UNIQUE constraint failed: auth_user.username

This works if i change the model User to Usuario...

Models.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 

But i need to use the User model from django


Solution

  • The username field in the user model is required.

    This is why you must use this field in create operations.

    Email address is not mandatory by default.

    It happens on Django create user via a unique user username.