Как изменить формат поля timestamp в Django Rest Framework

У меня эта модель:

class Post(models.Model):
    poster = models.ForeignKey('User', on_delete=models.CASCADE, related_name='posts')
    body = models.TextField()
    timestamp = models.DateTimeField(auto_now_add=True)
    likers = models.ManyToManyField('User', null=True, blank=True, related_name='liked_posts')
    savers = models.ManyToManyField('User', null=True, blank=True, related_name='saved_posts')
    likes = models.IntegerField(default=0)

Я хочу вернуть поле timestamp в json в виде: timestamp.strftime('%b %d %Y, %I:%M %p') Мне предложили написать этот код в сериализаторе модели:

class PostSerializer(serializers.ModelSerializer):
    str_timestamp = serializers.SerializerMethodField(
        method_name="get_str_timestamp"
    )

    class Meta:
        model = Post
        fields = '__all__'

    def get_str_timestamp(self, obj: Post):
        return obj.timestamp.strftime('%b %d %Y, %I:%M %p')

Но он не работает и все еще имеет сырой формат.

https://www.django-rest-framework.org/api-guide/fields/#datetimefield

Для вашего случая: str_timestamp = serializers.DateTimeField(format="%b %d %Y, %I:%M %p")

Или если вам нужно настроить все поля времени даты. Настройте REST_FRAMEWORK -> DATETIME_FORMAT

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