如何在 Django 中序列化 DateTimeField
How to serialize DateTimeField in Django
如何序列化 dob 字段以实现 dob 的具体格式,例如 ==> 03/Jan/2020 或 05-Feb-2021
class PersonSerializer():
....
........
dob = serializers.DateTimeField(format="%d/%m/%Y")
class Meta:
model = Person
fields = "__all__"
到目前为止,我的格式是 20/12/2020
来自 DRF 文档;
DateTimeField format strings. Format strings may either be Python
strftime formats which explicitly specify the format, or the special
string 'iso-8601', which indicates that ISO 8601 style datetimes
should be used. (eg '2013-01-29T12:34:56.000000Z')
因此您可以像 datetime.datetime
对象一样格式化它。如
class PersonSerializer():
....
........
dob = serializers.DateTimeField(format="%d/%b/%Y")
class Meta:
model = Person
fields = "__all__"
我们还必须提到,设置为格式字符串意味着 to_representation return 值应强制为字符串输出。
如果你想在全球范围内以某种格式输出日期,那么你可以在 settings.py
文件中设置它。
settings.py
REST_FRAMEWORK = {
'DATE_FORMAT': "%d/%m/%Y",
#-- other settings-----#
}
但是如果你只想输出模型的某个字段,那么你可以这样做。
class PersonSerializer(serializers.ModelSerializer):
# ....
# ........
custom_dob = serializers.ReadOnlyField()
class Meta:
model = Person
fields = "__all__"
您可以在 Person
模型中创建 属性
class Person(models.Model):
dob = models.DateField()
@property
def custom_dob(self):
return self.dob.strftime("%d/%m/%Y")
如何序列化 dob 字段以实现 dob 的具体格式,例如 ==> 03/Jan/2020 或 05-Feb-2021
class PersonSerializer():
....
........
dob = serializers.DateTimeField(format="%d/%m/%Y")
class Meta:
model = Person
fields = "__all__"
到目前为止,我的格式是 20/12/2020
来自 DRF 文档;
DateTimeField format strings. Format strings may either be Python strftime formats which explicitly specify the format, or the special string 'iso-8601', which indicates that ISO 8601 style datetimes should be used. (eg '2013-01-29T12:34:56.000000Z')
因此您可以像 datetime.datetime
对象一样格式化它。如
class PersonSerializer():
....
........
dob = serializers.DateTimeField(format="%d/%b/%Y")
class Meta:
model = Person
fields = "__all__"
我们还必须提到,设置为格式字符串意味着 to_representation return 值应强制为字符串输出。
如果你想在全球范围内以某种格式输出日期,那么你可以在 settings.py
文件中设置它。
settings.py
REST_FRAMEWORK = {
'DATE_FORMAT': "%d/%m/%Y",
#-- other settings-----#
}
但是如果你只想输出模型的某个字段,那么你可以这样做。
class PersonSerializer(serializers.ModelSerializer):
# ....
# ........
custom_dob = serializers.ReadOnlyField()
class Meta:
model = Person
fields = "__all__"
您可以在 Person
模型中创建 属性
class Person(models.Model):
dob = models.DateField()
@property
def custom_dob(self):
return self.dob.strftime("%d/%m/%Y")