首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django如何将字段序列化为DateTimeRangeField

django如何将字段序列化为DateTimeRangeField
EN

Stack Overflow用户
提问于 2018-06-22 16:59:17
回答 1查看 748关注 0票数 2

我在将字段序列化为DateTimeRangeField时遇到了一些问题。请求当前必须具有以下格式:

代码语言:javascript
复制
data = {"time":
         {
           "lower": timeThing,
           "upper": laterTimeThing
         }
       }

我希望它在请求上是这样的:

代码语言:javascript
复制
data = {
           "start": timeThing,
           "end": laterTimeThing
       }

这样我就可以将start/end序列化为lower/upper。这是我的模型:

代码语言:javascript
复制
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':‘这个字段是必需的。’}

EN

回答 1

Stack Overflow用户

发布于 2018-06-22 17:59:07

你可以试试这个

代码语言:javascript
复制
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)}})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50984323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档