Django TimeStampedModel не автоматически добавляет метки времени в drf APITestCase

У меня есть модель, которая наследует TimeStampedModel для автоматического добавления created и modified полей. У меня есть API, который принимает данные из почты и создает объекты. Все работает нормально, когда я тестирую API с почтальоном. Но когда я тестирую API с помощью тестовых примеров DRF, я получаю ошибку

django.db.utils.IntegrityError: null value in column "created" violates not-null constraint
DETAIL:  Failing row contains (101, null, null, 3600, 3, 6).

Я получаю эту ошибку только при вызове API из тестовых примеров. В остальном, все работает нормально в postman и react frontend.

Это модель.

class Activity(TimeStampedModel):
    time_spent = models.IntegerField()  # in seconds
    activity_type = models.ForeignKey(
        ActivityType, on_delete=models.CASCADE, related_name='activities')
    user = models.ForeignKey('user.User', on_delete=models.CASCADE)

Это API.

@action(detail=True, methods=['post'], serializer_class=ActivitySerializer, url_name='add_activity')
def add_activity(self, request, pk):
    # add activity for a activity type
    activity_type = self.get_object()
    serializer = self.serializer_class(data=request.data)
    if serializer.is_valid():
        serializer.save(user=request.user, activity_type=activity_type)
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    else:
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

А это тестовый пример.

def test_add_activity_succeed(self):
    self.client.credentials(HTTP_AUTHORIZATION=f'Token {self.token}')
    data = {"time_spent": 3600}
    activity_type = ActivityType.objects.create(name="test1", user=self.user)
    response = self.client.post(reverse('activity_types-add_activity',
                                kwargs={'pk': activity_type.id}), data=data)
    self.assertEqual(response.status_code, status.HTTP_201_CREATED)

У меня есть еще несколько моделей, которые также наследуют TimeStampedModel. И тестовые примеры работают нормально при создании этих объектов.

Я пробовал разные подходы, но все равно получаю эту ошибку. Даже когда я напрямую пытался создать объект с помощью

Activity.objects.create(time_spent=1000, user=self.user, activity_type=activity_type)

Все еще получаю ту же ошибку

django.db.utils.IntegrityError: null value in column "created" violates not-null constraint
DETAIL:  Failing row contains (101, null, null, 1000, 2, 4).

Есть предположения, что может быть причиной этой ошибки?

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