简体   繁体   中英

How to modify Django models.DateTimeField type?

I am running an api server using django rest api. I want to change 2020-01-01T00:00:00+09:00 to 2020-01-01 00:00:00 in model.

This is my model code..

from django.db import models 

class Data(models.Model): 
    time = models.DateTimeField(auto_now_add=True)
    sensor = models.CharField(max_length=30)
    measure = models.IntegerField()
    
    def __str__(self): 
        return self.sensor

And my serializer code..

from rest_framework import serializers 
from .models import Data

class MovieSerializer(serializers.ModelSerializer): 
    class Meta: 
        model = Data
        fields = ('id','time','sensor','measure')

lastly my view

from .models import Data 
from .serializers import MovieSerializer 
from django.http import Http404
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status


class DataList(APIView):


    def get_object(self, pk):
        try:
            return Data.objects.filter(sensor=pk)
        except Data.DoesNotExist:
            raise Http404
        
    def get(self, request, format=None):
        dt = Data.objects.all()
        serializer = MovieSerializer(dt, many=True)
        return Response(serializer.data)

    def post(self, request, format=None):
        val = request.data.values()
        if val is not None:
            for i in val:
                snippet = self.get_object(i)
                serializer = MovieSerializer(snippet, many=True)
        return Response(serializer.data)

I think I can't modify the code of view and serialize. I need a way to modify the type in the model.

Thank you.

A model field is not concerned with the format. You can specify the format in the DateTimeField serializer field [drf-doc] :

class MovieSerializer(serializers.ModelSerializer):
    time = serializers.DateTimeField()

    class Meta: 
        model = Data
        fields = ('id','time','sensor','measure')

If you want to change the format for all DateTimeField s, you can change the DATETIME_FORMAT setting [drf-doc] API_SETTINGS :

# settings.py

# …

REST_FRAMEWORK = {
    
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM