【问题标题】:Django REST Framework internal valueDjango REST Framework 内部价值
【发布时间】:2021-03-19 11:44:30
【问题描述】:

我有一个带有日期字段的简单序列化程序(不是 ModelSerializer)。

class MySerializer(Serializer):
    some_date = DateField()

我试图在反序列化后访问日期对象。

slz = MySerializer(data={"some_date": "2020-05-03"})
# I surely have a better error handling in my actual code
assert slz.is_valid()
some_extracted_date = slz.data["some_date"]

我希望我的变量 some_extracted_date 是一个 datetime.date 实例。 但是 MySerializer.data 字典中的值是一个字符串。

有没有办法得到这个 datetime.date 实例?

【问题讨论】:

  • 尝试from dateutil import parser my_dt_obj = parser.parse("your_string") 如果第一次没有按照您的预期工作(例如时区),您可能需要使用其格式以便正确解析

标签: django serialization django-rest-framework


【解决方案1】:

您在使用validated_data 验证后访问数据。

>>> from app.models import MySerializer
>>> slz = MySerializer(data={"some_date": "2020-05-03"})
>>> slz.is_valid(True)
True
>>> slz.data
{'some_date': '2020-05-03'}
>>> slz.validated_data
OrderedDict([('some_date', datetime.date(2020, 5, 3))])
>>> slz.validated_data['some_date']
datetime.date(2020, 5, 3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-24
    • 2017-04-27
    • 2020-06-15
    • 2020-04-12
    • 1970-01-01
    • 2019-08-03
    • 2015-03-27
    • 2016-01-09
    相关资源
    最近更新 更多