如何将DataTimeField字段的表示形式更改为要序列化的格式'%Y-%m-%d%H:%M:%S'

时间:2019-08-06 19:12:37

标签: django django-rest-framework

下午好,我在Django中使用以下模型,并且字段last_update是Faithful DateTme字段,当我对其进行序列化时,其表示如下:

“ 2019-08-06T14:19:05-04:00”

我想这样代表它:

“ 2019-08-06 19:05:04”

class Interface(models.Model):

    id_interface=models.PositiveIntegerField(primary_key=True)
    id_EquipoOrigen=models.ForeignKey(Equipo,on_delete=models.DO_NOTHING,related_name='equipo_origen')
    id_PuertoOrigen=models.ForeignKey(Puerto,on_delete=models.DO_NOTHING,related_name='puerto_origen',
                                      null=True,blank=True)
    estatus=models.BooleanField(default=False)
    etiqueta_prtg=models.CharField(max_length=80,null=True,blank=True)
    grupo=models.PositiveSmallIntegerField(default=0,blank=True)
    if_index=models.PositiveIntegerField(default=0,blank=True)
    bw=models.PositiveSmallIntegerField(default=0,blank=True)
    bw_al=models.PositiveSmallIntegerField(default=0,blank=True)
    id_prtg=models.PositiveSmallIntegerField(default=0,blank=True)
    ospf=models.BooleanField(default=False)
    description=models.CharField(max_length=200,null=True,blank=True)
    id_EquipoDestino=models.ForeignKey(Equipo,on_delete=models.DO_NOTHING,related_name='equipo_destino')
    id_PuertoDestino=models.ForeignKey(Puerto,on_delete=models.DO_NOTHING,related_name='puerto_destino')
    ultima_actualizacion=models.DateTimeField(auto_now=True)

    class Meta:
        db_table='Interface'


class InterfaceSerializer(serializers.ModelSerializer):
    # Las siguientes lineas me permiten agregan campos de otros modelos al modelo en cuestion que estoty serializando a traves de llaves foraneas.
    #Se le agrega la propiedad de read_only=True para que el campo no sea editable.
    EquipoOrigen = serializers.CharField(source='id_EquipoOrigen.nombre',read_only=True)
    PuertoOrigen = serializers.CharField(source='id_PuertoOrigen.nombre',read_only=True)
    LocalidadOrigen=serializers.CharField(source='id_EquipoOrigen.localidad',read_only=True)
    CategoriaOrigen=serializers.CharField(source='id_EquipoOrigen.categoria',read_only=True)
    ip_gestion_origen=serializers.CharField(source='id_EquipoOrigen.ip_gestion',read_only=True)
    vendedor_origen=serializers.CharField(source='id_EquipoOrigen.vendedor',read_only=True)
    EquipoDestino = serializers.CharField(source='id_EquipoDestino.nombre',read_only=True)
    ip_gestion_destino=serializers.CharField(source='id_EquipoDestino.ip_gestion',read_only=True)
    vendedor_destino=serializers.CharField(source='id_EquipoDestino.vendedor',read_only=True)
    PuertoDestino = serializers.CharField(source='id_PuertoDestino.nombre',read_only=True)
    LocalidadDestino=serializers.CharField(source='id_EquipoDestino.localidad',read_only=True)
    CategoriaDestino=serializers.CharField(source='id_EquipoDestino.categoria',read_only=True)
    ultima_actualizacion=serializers.CharField(source='utlima_actualizacion')
    #Los campos que voy a mostrar en mi serializacion con la clase Meta
    class Meta:
        model=Interface
        fields=('id_interface','id_EquipoOrigen','EquipoOrigen','ip_gestion_origen','id_PuertoOrigen',
                'PuertoOrigen','LocalidadOrigen','CategoriaOrigen','vendedor_origen','estatus',
                'etiqueta_prtg','grupo','if_index','bw','bw_al','id_prtg','ospf','description',
                'id_EquipoDestino','EquipoDestino','ip_gestion_destino','vendedor_destino','id_PuertoDestino','PuertoDestino','LocalidadDestino',
                'CategoriaDestino','ultima_actualizacion',) 

class InterfacesViewSet(viewsets.ModelViewSet):

    queryset=Interface.objects.all()
    serializer_class=InterfaceSerializer
    pagination_class=PostPageNumberPagination
    filter_class=InterfacesFilter

enter image description here

2 个答案:

答案 0 :(得分:0)

尽管我没有看到您的last_update作为模型的模型字段。您可以按照

class InterfaceSerializer(serializers.ModelSerializer): 

    ....your serializer code
    def get_last_update(self, last_update):
        return last_update.strftime("%Y-%m-%d %H:%M:%S")

答案 1 :(得分:0)

ultima_actualizacion = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S")

应该为您解决问题