在 Django Rest Famework 中格式化 TimeField 的输入和输出的正确方法?

Rak*_*kmo 4 python django django-rest-framework

模型.py

class DemoA(models.Model):
    my_time = models.TimeField()
Run Code Online (Sandbox Code Playgroud)

序列化程序.py

class DemoASerializer(serializer.ModelSerializer):
    class Meta:
        model = DemoA
        fields = ('my_time', )
Run Code Online (Sandbox Code Playgroud)

默认情况下,对于my_time字段,它的格式为10:30:00, ( %H:%M:%S)。想要的是序列化格式为10:30,( %H:%M)。

是否有任何默认方法可以为这种情况指定格式,例如extra_kwargs在 serializer 中指定Meta

Wil*_*sem 6

您可以通过指定TimeField[drf-doc](这不是Django 模型的TimeField[Django-doc])来指定字段应如何格式化数据:

class DemoASerializer(serializers.ModelSerializer):

    my_time = serializers.TimeField(format='%H:%M')

    class Meta:
        model = DemoA
        fields = ('my_time', )
Run Code Online (Sandbox Code Playgroud)

或使用extra_kwargs[drf-doc]

class DemoASerializer(serializers.ModelSerializer):

    class Meta:
        model = DemoA
        fields = ('my_time', )
        extra_kwargs = {'my_time': {'format': '%H:%M'}}
Run Code Online (Sandbox Code Playgroud)