Django RestFramework - тестовое представление не работает с результатом 400

прямо сейчас я пытаюсь создать простой тест-файл для ListCreateAPIView внутри моего views.py:

Внутри моего settings.py я установил json по умолчанию для целей тестирования:

REST_FRAMEWORK = {
    'TEST_REQUEST_DEFAULT_FORMAT': 'json'
}

views.py:

class AuthorListCreateView(ListCreateAPIView):
    queryset = Author.objects.all()
    serializer_class = AuthorSerializer

serializers.py:

class AuthorSerializer(serializers.ModelSerializer):
    class Meta:
        model = Author
        fields = '__all__'

urls.py:

urlpatterns = [
    path('author/', AuthorListCreateView.as_view(), name='author-list'),
]

models.py

from django.contrib.auth import get_user_model

USER = get_user_model()


class BaseModel(models.Model):
    id = models.BigAutoField(primary_key=True, editable=False, unique=True)
    created_by = models.ForeignKey(USER, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True
        get_latest_by = 'created_at'


class Author(BaseModel):

    class Gender(models.TextChoices):
        NO = 'NO', 'No gender chosen'
        DIVERSE = 'DI', 'Diverse'
        FEMALE = 'FE', 'Female'
        MALE = 'MA', 'Male'

    first_name = models.CharField(max_length=50, null=False, blank=False)
    last_name = models.CharField(max_length=50, null=False, blank=False)
    born = models.DateField(null=False, blank=False)
    died = models.DateField(null=True, blank=True)
    passed = models.BooleanField(default=False)
    gender = models.CharField(max_length=2, choices=Gender.choices, default=Gender.NO)
    slug = models.SlugField(null=False, blank=False, unique=True)

    class Meta:
        ordering = ['last_name', 'first_name']
        constraints = [
            models.UniqueConstraint(fields=['last_name', 'first_name'], name='unique_name_constraint'),
        ]
        indexes = [
            models.Index(fields=['last_name', 'first_name'], name='index_unique_name'),
        ]
        verbose_name = 'Author'
        verbose_name_plural = 'Authors'

    def __str__(self) -> str:
        return f'{self.first_name} {self.last_name}'

    def save(self, *args, **kwargs):
        self.passed = True if self.died is not None else False
        self.slug = slugify(f'{self.last_name}-{self.first_name}') if not self.slug else self.slug
        super(Author, self).save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse('author-detail', kwargs={'slug': self.slug})

    def clean(self):
        if self.died is not None and self.born > self.died:
            raise ValidationError("Date of born can't be further in time than date of death!")

    @property
    def age(self):
        if self.passed:
            delta = self.died - self.born
            return delta.days // 365
        else:
            delta = date.today() - self.born
            return delta.days // 365

Как вы можете видеть, структура довольно базовая, но всякий раз, когда я пытаюсь протестировать свое представление, я получаю HTTP_400_BAD_REQUEST! В качестве примечания, создание объекта с помощью фактического api работает отлично.

test_views.py:

import datetime
from django.urls import reverse
from django.utils import timezone
from rest_framework import status
from rest_framework.test import APITestCase
from ..models import Author


class AuthorTest(APITestCase):
    def test_create_obj(self):
        url = reverse('author-list')

        data = {
            'id': 1,
            'first_name': 'Jane',
            'last_name': 'Doe',
            'born': datetime.date(1940, 1, 1),
            'died': datetime.date(2010, 12, 31),
            'passed': True,
            'gender': 'FE',
            'slug': 'doe-jane',
            'created_by': 1,
            'created_at': timezone.now(),
            'updated_at': timezone.now(),
        }
        response = self.client.post(url, data, format='json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(Author.objects.count(), 1)
        self.assertEqual(Author.objects.get().first_name, 'Jane')

Может ли кто-нибудь увидеть, что я упускаю или делаю неправильно?

Вернуться на верх