You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django序列化器中将DateTimeField仅显示日期而非时间?

解决办法:

我来给你几个实用的方案,帮你把DateTimeField只输出日期部分:

方案1:使用SerializerMethodField自定义输出

这种方式最直观,每个日期字段单独处理,还能灵活应对null的情况:

class Serializer_Job_TX(serializers.ModelSerializer):
    created_at = serializers.SerializerMethodField()
    updated_at = serializers.SerializerMethodField()

    def get_created_at(self, obj):
        # 如果字段不为空,返回日期部分;否则返回None
        return obj.created_at.date() if obj.created_at else None

    def get_updated_at(self, obj):
        return obj.updated_at.date() if obj.updated_at else None

    class Meta:
        model = modelTest
        fields = [
            'created_at',
            'updated_at',
            'imageA',
        ]

方案2:自定义日期字段类(复用性强)

如果你的多个序列化器都需要只输出日期的功能,可以自定义一个通用字段:

from rest_framework import serializers

class DateOnlyField(serializers.DateTimeField):
    def to_representation(self, value):
        if not value:
            return None
        # 只返回日期对象,序列化后会自动转为字符串格式
        return value.date()

# 然后在序列化器中使用这个字段
class Serializer_Job_TX(serializers.ModelSerializer):
    created_at = DateOnlyField()
    updated_at = DateOnlyField()

    class Meta:
        model = modelTest
        fields = [
            'created_at',
            'updated_at',
            'imageA',
        ]

方案3:重写序列化器的to_representation方法统一处理

如果想在序列化器层面统一修改所有日期字段的输出,可以重写这个方法:

class Serializer_Job_TX(serializers.ModelSerializer):
    class Meta:
        model = modelTest
        fields = [
            'created_at',
            'updated_at',
            'imageA',
        ]

    def to_representation(self, instance):
        # 先获取默认的序列化数据
        data = super().to_representation(instance)
        # 逐个处理日期字段
        if data.get('created_at'):
            data['created_at'] = instance.created_at.date()
        if data.get('updated_at'):
            data['updated_at'] = instance.updated_at.date()
        return data

这三个方案都能实现你的需求,你可以根据自己的实际场景选择:如果只是单个序列化器需要,方案1或3都可以;如果多个地方需要,方案2的复用性更好。

内容的提问来源于stack exchange,提问作者MistyD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:48:06