簡體   English   中英

如何修改 Django models.DateTimeField 類型?

[英]How to modify Django models.DateTimeField type?

我正在使用 django rest api 運行 api 服務器。 我想將模型中的 2020-01-01T00:00:00+09:00 更改為 2020-01-01 00:00:00。

這是我的模型代碼..

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

還有我的序列化器代碼..

from rest_framework import serializers 
from .models import Data

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

最后我的看法

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)

我想我不能修改視圖和序列化的代碼。 我需要一種方法來修改模型中的類型。

謝謝你。

模型字段與格式無關。 您可以在DateTimeField序列化器字段 [drf-doc] 中指定格式:

class MovieSerializer(serializers.ModelSerializer):
    time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S')

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

如果要更改所有DateTimeField的格式,可以更改DATETIME_FORMAT設置 [drf-doc] API_SETTINGS

# settings.py

# …

REST_FRAMEWORK = {
    'DATETIME_FORMAT': '%Y-%m-%d %H:%M:%S'
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM