Ошибка IntegrityError в / auth / login / NOT NULL: authtoken_token.user_id - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь настроить базовый c API. Однако, когда я пытаюсь войти в систему, кажется, что произошла ошибка. Я использую django -rest-auth и пытался настроить процесс входа в систему, создав сериализатор входа в систему. Каким-то образом каждый раз, когда я пытаюсь войти в систему, возникает эта ошибка.

serializers.py

<...local imports...>
from rest_framework import serializers
from django.contrib.auth import authenticate


class ToDoSerializer(serializers.ModelSerializer):
    class Meta:
        model = ToDo
        fields = '__all__'
        extra_kwargs = {'priority': {'write_only': True}}


class CustomerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Customer
        fields = "__all__"


class LoginSerializer(serializers.ModelSerializer):

    email = serializers.EmailField(write_only=True)
    password = serializers.CharField(write_only=True)

    class Meta:
        model = Customer
        fields = ['email', 'password']

    def validate_credential(self, email, password):
        user = None
        if email and password:
            user = authenticate(email=email,
                                password=password)
        else:
            raise exceptions.ValidationError('Invalid Credentials')
        return user

    def validate(self, attrs):
        email = attrs.get('email')
        password = attrs.get('password')
        user = self.validate_credential(email, password)
        attrs['user'] = user
        return attrs

models.py

from django.db import models
from django.contrib.auth import settings
from django.contrib.auth.models import AbstractUser

# Create your models here.


class ToDo(models.Model):
    text = models.CharField(max_length=120)
    priority = models.BooleanField(default=False)
    customer = models.ForeignKey(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='todos')

    def __str__(self):
        return f"{self.text} by {self.customer}"


class Customer(AbstractUser):
    username = models.CharField(max_length=120, unique=True)
    email = models.EmailField(unique=True)
    priority = models.ForeignKey(
        ToDo, on_delete=models.CASCADE, null=True, related_name='customers')

    def __str__(self):
        return self.email

В чем может быть ошибка и как Я разрешаю?

...