Как изменить формат поля 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