更改日期时间格式django休息框架

时间:2017-03-31 11:11:19

标签: model django-rest-framework

我想在django rest framework中更改日期时间格式

我已经实现了一个逻辑,但它没有满足我的要求

模型

class User (models.Model):
    user_id = models.AutoField(primary_key=True)
    user_name = models.CharField(max_length=150)
    created_at = models.DateTimeField()

setting.py文件我已经定义了日期时间格式

REST_FRAMEWORK = {

    'DATETIME_FORMAT': "%m/%d/%Y %H:%M:%S",
}

查询

data = User.objects.filter(pk=51)
serializer = UserSerializer(data, many=True)
序列化数据后的

结果

 {
      "user_id": 41406,
      "user_name": "abc@gmail.com",
      "created_at": "09/26/2016 22:52:16",
 }

现在当我点击另一个模型时,日期时间格式也是这样的" 09/26/2016 22:52:16"但我不想在anthor模型中使用这种日期格式。

如果我们可以更改特定的型号日期时间格式并在序列化程序中调用它,请告诉我

2 个答案:

答案 0 :(得分:11)

您可以在需要不同日期输出的模型序列化程序中覆盖to_representation方法:

class UserSerializer(serializers.ModelSerializer):
    ...
    def to_representation(self, instance):
        representation = super(UserSerializer, self).to_representation(instance)
        representation['created_at'] = instance.created_at.strftime(<your format string>)
        return representation

或者您可以编写自定义字段并使用它而不是默认字段。

class UserSerializer(serializers.ModelSerializer):
    created_at = serializers.DateTimeField(format='%Y')
    # add read_only=True to the field in case if date created automatically
    ...

答案 1 :(得分:0)

这对我有效,位于 settings.py

REST_FRAMEWORK = {
    'DATE_INPUT_FORMATS': ["%d-%m-%Y", ],
    ...}