Django как сделать CustomTimeField с учетом часовых поясов?

from django.db import models


class CustomTimeField(models.DateTimeField):
    ....

  • Цель: Мне нужно хранить дату в форме datetime, но мне нужно, чтобы это поле возвращало только час:минуту:секунду и исключало все остальное.

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

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

ваша модель:

class AModel(models.Modle):
    date_time_field = models.DateTimeField()
    
    @property
    def custom_time(self):
        return self.date_time_field.strftime("%H:%M:%S")

ваш сериализатор:

class ASerializer(serializers.ModelSerializer):
    custom_time = serializers.CharField(read_only=True)

    class Meta:
        model = AModel
        fields = ('custom_time',)
Вернуться на верх