我在将字段序列化为DateTimeRangeField时遇到了一些问题。请求当前必须具有以下格式:
data = {"time":
{
"lower": timeThing,
"upper": laterTimeThing
}
}我希望它在请求上是这样的:
data = {
"start": timeThing,
"end": laterTimeThing
}这样我就可以将start/end序列化为lower/upper。这是我的模型:
class Example(models.Model):
time = DateTimeRangeField()
user = models.ForeignKey('user.User')
class ExampleAPI(ListCreateAPIView):
serializer_class = ExampleSerializer
pagination_class = None
queryset = Example.objects.all()
def perform_create(self, serializer):
serializer.save(user=self.request.user)
class ExampleSerializer(serializers.ModelSerializer):
time = DateTimeRangeField(write_only=True)
user = serializers.ReadOnlyField(source='user.id')
class Meta:
model = Example
exclude = ['user']我尝试过创建一个custom field,但它似乎没有进入被覆盖的to_representation或to_internal_value中。我得到的错误消息是{'time':‘这个字段是必需的。’}
发布于 2018-06-22 17:59:07
你可以试试这个
import datetime
from rest_framework import serializers
from drf_extra_fields.fields import DateRangeField
class RangeSerializer(serializers.Serializer):
ranges = DateRangeField()
serializer = RangeSerializer(data={'ranges': {'lower': datetime.date(2015, 1, 1), 'upper': datetime.date(2015, 2, 1)}})https://stackoverflow.com/questions/50984323
复制相似问题