【问题标题】:Django RF, Error in Date comparison in serializer validation fieldDjango RF,序列化程序验证字段中的日期比较错误
【发布时间】:2020-06-28 16:30:08
【问题描述】:

我已经实现了下面的序列化程序验证,以检查用户输入的日期 (yyyy-mm-dd) 是否在本周内或至少在今天之前。

但我收到一个错误KeyError at 'today'

class TableCreateUpdateserializer(serializers.ModelSerializer):

    tablerequireDate = serializers.DateField()
    today = datetime.datetime.today()

    class Meta:
        model = Tables
        fields = ['tablerequireDate', 'tablerequiretime']
                  

    def validate(self, data):
        if data['tablerequireDate'] >= data['today']:
            raise serializers.ValidationError(
                "Date must be today or within 7 days")
        return data

【问题讨论】:

  • 试试self.today 看看是否可行?
  • 得到错误 TypeError at /api/create/ can't compare datetime.datetime to datetime.date

标签: django django-rest-framework


【解决方案1】:

对于键错误: 您的数据不包含今天归档。你的课有。所以使用self.today

对于类型错误: 您的今天字段的类型为 datetime.datetime,并且您在数据中传递了 datetime.date。两者应该是一样的。使用datetime.date.today()

【讨论】:

    【解决方案2】:

    当你可以在validate方法中声明它时,为什么需要将它添加到类中:

    def validate(self, data):
        if data['tablerequireDate'] >= datetime.today():
            raise serializers.ValidationError(
                "Date must be today or within 7 days")
        return data
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 2014-11-25
      • 2013-06-18
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多