Укажите формат времени в model_to_dict

avatar
swor
1 июля 2021 в 15:41
58
1
1

У меня есть модель

class Frame(models.Model):
    timestamp = models.DateTimeField(default=timezone.now)
    url_to_frame = models.CharField(max_length=100)

    def __str__(self):
        return f"{self.timestamp}_{self.url_to_frame}"

Я должен использовать from django.forms.models import model_to_dict для сериализации объекта Frame

Я получаю метку времени в следующем формате: "timestamp": "2021-06-27T14:18:00Z"

Но мне нужен такой формат 2021-07-01 01:20:00

Как указать формат времени в моем случае?

Источник

Ответы (1)

avatar
Willem Van Onsem
1 июля 2021 в 15:51
1

Я получаю отметку времени в следующем формате "отметка времени": "2021-06-27T14:18:00Z"

Это формат даты и времени ISO 8601. Мы можем проанализировать это с помощью пакета python-dateutil. Вы можете установить этот пакет с помощью:

pip3 install python-dateutil

тогда мы можем проанализировать это с помощью:

>>> from dateutil.parser import isoparse
>>> isoparse('2021-06-27T14:18:00Z')
datetime.datetime(2021, 6, 27, 14, 18, tzinfo=tzutc())

Таким образом, вы можете предварительно обработать словарь с помощью:

from dateutil.parser import isoparse

mydata['timestamp'] = isoparse(mydata['timestamp'])

If you want to do advanced serializing and deserializing, it might be better to work with the serializers of the Django REST framework.

swor
1 июля 2021 в 18:10
0

Спасибо за ответ. Но как я могу применить это к функции model_to_dict

Willem Van Onsem
1 июля 2021 в 18:11
1

@svor: вы должны обработать результат, поэтому вы выполняете model_to_dict, а затем обновляете словарь элементом, хранящимся в ключе timestamp.