DateTimeField, выбрасывающее datetime, не является сериализуемым

Я добавил новое поле Datetime в свою модель.

class MyModel:
    valid_upto = models.DateTimeField(auto_now=True, blank=True, null=True)

а мой код сериализатора таков

class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = '__all__'

При обновлении одного экземпляра я получаю TypeError: Object of type datetime is not JSON serializable. значение, которое может прийти в valid_upto это None или значение времени, которое я получаю из timezone.now()

Возможно, вы ошиблись с атрибутом поля. Подробнее здесь: https://docs.djangoproject.com/en/4.1/ref/models/fields/#django.db.models.DateField.auto_now

class MyModel:
    valid_upto = models.DateTimeField(auto_now=True, auto_now_add=True)

По умолчанию это поле имеет значение not editable. И serializer должен его проверять. Но если вы хотите, вы можете удалить это поле вручную:

class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        exclude = ('valid_upto', )
Вернуться на верх