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

时间:2019-05-27 10:58:34

标签: python django django-rest-framework

models.py

class DemoA(models.Model):
    my_time = models.TimeField()

serializers.py

class DemoASerializer(serializer.ModelSerializer):
    class Meta:
        model = DemoA
        fields = ('my_time', )

默认情况下,my_time字段的格式为10:30:00%H:%M:%S)。所需的是序列化格式为10:30%H:%M)。

有没有默认的方式可以指定这种情况下的格式,例如在序列化程序extra_kwargs中指定Meta

2 个答案:

答案 0 :(得分:3)

您可以通过指定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', )

或使用extra_kwargs [drf-doc]

class DemoASerializer(serializers.ModelSerializer):

    class Meta:
        model = DemoA
        fields = ('my_time', )
        extra_kwargs = {'my_time': {'format': '%H:%M'}}

答案 1 :(得分:0)

可以在序列化程序上设置格式,但是它可以按比例缩放,因为您需要将其添加到整个应用程序的所有序列化程序中。 DRF允许您在设置上将其设置为应用程序的默认格式。您将显示设置它,并仅在需要时覆盖序列化器上的格式。

REST_FRAMEWORK = {
   ... # your other stuff
   'TIME_INPUT_FORMATS': ('%H:%M', )
}