有沒有辦法讓我的序列化程式默認列印日期時間欄位,就像這樣
2022-03-28T00:00:00 00:00
而不是這個
2022-03-23T03:16:00Z
當我這樣做時,我得到了第一個輸出
return obj.time.isoformat()
uj5u.com熱心網友回復:
原因
如果您查看django-rest-frameworkin serializers.DateTimeFieldif datetime is UTC timezone 的代碼,則 UTC 偏移量 ( 00:00) 將被轉換Z為可以在此處看到的
解決方案
如果要使其可重用于DateTimeField,則需要創建一個自定義序列化程式,該序列化DateTimeField程式繼承自serializers.DateTimeField并覆寫該to_representation方法,方法是從django-rest-framework將 UTC 偏移字串轉換為Z.
from restframework import ISO_8601
from restframework import serializers
class CustomDateTimeField(serializers.DateTimeField):
def to_representation(self, value):
if not value:
return None
output_format = getattr(self, 'format', api_settings.DATETIME_FORMAT)
if output_format is None or isinstance(value, str):
return value
value = self.enforce_timezone(value)
if output_format.lower() == ISO_8601:
value = value.isoformat()
# remove lines that convert " 00:00" to "Z"
# See https://github.com/encode/django-rest-framework/blob/f4cf0260bf3c9323e798325702be690ca25949ca/rest_framework/fields.py#L1239:L1240
return value
return value.strftime(output_format)
然后在您的序列化程式中使用它而不是serializers.DateTimeField
class MySerializer(serializers.Serializer):
datetime = CustomDateTimeField()
額外的
如果您想在 中使用它serializers.ModelSerializer,您需要按照以下步驟操作
- Create a custom
ModelSerializerthat inherits fromserializers.ModelSerializerand setserializer_field_mappingattribute as follows
class CustomModelSerializer(serializers.ModelSerializer):
serializer_field_mapping = {
# copy serializer_field_mapping
**serializers.ModelSerializer.serializer_field_mapping,
# override models.DateTimeField to map to CustomDateTimeField
models.DateTimeField: CustomDateTimeField,
}
- Use
CustomModelSerializerinstead ofserializers.ModelSerializer. E.g.
class LogSerializer(CustomModelSerializer):
class Meta:
model = Log
fields = ["id", "created_at"]
uj5u.com熱心網友回復:
最簡單的方法是在序列化程式中指定您想要的格式:
class MySerializer(serializer.Serializer):
my_date = serializers.DateTimeField(format='%Y-%m-%dT%H:%M') # Specify your format here
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/452723.html
標籤:django 约会时间 django-rest-framework 蟒蛇日期时间 django-序列化器
