【问题标题】:[u"'' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."][u"'' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."]
【发布时间】:2016-04-04 14:56:36
【问题描述】:

美好的一天。 我有一个搜索数据库中项目的 Django 视图。用户可以在过滤其过滤日期的数据库时使用电子邮件或订单号进行搜索。 如果我尝试搜索,我会得到这些错误

[u"'' 值的格式无效。它必须是 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] 格式。"]

这是我的意见.py

def search_form(request):

    if request.method == 'GET':
        user_search = request.GET.get('order')
        print "What is searched for is : ", user_search

        start_date = request.GET.get('first_date')
        print "The start date is : ", start_date

        end_date = request.GET.get('second_date')
        print "The end date is : ", end_date

        if user_search != None or start_date != None or end_date != None:
            items = Order.objects.filter(Q(order_number__iexact=user_search) |
                Q(client__email__iexact=user_search) |
                Q(created_on__range=[start_date, end_date])
                )
            print "items ", items

错误指向Q(created_on__range=[start_date, end_date])

追溯:

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
  149.                     response = self.process_exception_by_middleware(e, request)

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
  147.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Python27\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
  23.                 return view_func(request, *args, **kwargs)

File "C:\Users\Uchechukwu\Dropbox\Engrs-Shared-Projects\JSA_WEB\jsa_admin\views.py" in search_form
  926.                 Q(created_on__range=[start_date, end_date])

File "C:\Python27\lib\site-packages\django\db\models\manager.py" in manager_method
  122.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "C:\Python27\lib\site-packages\django\db\models\query.py" in filter
  790.         return self._filter_or_exclude(False, *args, **kwargs)

File "C:\Python27\lib\site-packages\django\db\models\query.py" in _filter_or_exclude
  808.             clone.query.add_q(Q(*args, **kwargs))

File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in add_q
  1243.         clause, _ = self._add_q(q_object, self.used_aliases)

File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in _add_q
  1263.                     current_negated, allow_joins, split_subq)

File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in _add_q
  1269.                     allow_joins=allow_joins, split_subq=split_subq,

File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in build_filter
  1203.             condition = self.build_lookup(lookups, col, value)

File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in build_lookup
  1099.                 return final_lookup(lhs, rhs)

File "C:\Python27\lib\site-packages\django\db\models\lookups.py" in __init__
  19.         self.rhs = self.get_prep_lookup()

File "C:\Python27\lib\site-packages\django\db\models\lookups.py" in get_prep_lookup
  57.         return self.lhs.output_field.get_prep_lookup(self.lookup_name, self.rhs)

File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_lookup
  746.             return [self.get_prep_value(v) for v in value]

File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_value
  1440.         value = super(DateTimeField, self).get_prep_value(value)

File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_value
  1296.         return self.to_python(value)

File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py" in to_python
  1423.             params={'value': value},

Exception Type: ValidationError at /dashboard/search_form/
Exception Value: [u"'' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."]

【问题讨论】:

  • 能否请您提供实际的回溯消息?看来你有什么东西试图用一个空字符串来做一个日期。

标签: python django date


【解决方案1】:

您检查了是否有任何参数不是“无”。但是,如果开始日期或结束日期中的任何一个为无,则该检查将通过,但查询将失败并出现您看到的错误。在过滤它们之前,您需要检查开始日期和结束日期都不是无。

【讨论】:

  • 如果我用日期查询数据库,它可以工作,但如果我查询没有日期错误会弹出
  • 是的。所以不要那样做。
  • 谢谢!我设置了blank=True,但没有设置null=True — 已修复,已解决。
【解决方案2】:

这个错误很可能发生,因为 Django 需要 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] 格式的 DateTimeField 值,而您之前可能通过使用 strftime 将其格式化为字符串,因此 Django 无法正确识别哪个数字代表对应的datetime 变量(年、月、日、小时、分钟、秒、时区)。

您可以通过使用strptime 将字符串转换回日期时间来解决它,

start_date = start_date.strptime(date_string, "YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]")
end_date = end_date.strptime(date_string, "YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]")

或者你可以简单地删除命令

start_date.strftime("your_chosen_format")
end_date.strftime("your_chosen_format")

你以前用过的地方。

【讨论】:

    【解决方案3】:

    我在 Heroku 上部署代码时遇到了类似的问题。

    将我的模型属性更正为

    models.DateField(blank=True, null=True,default=datetime.date.today)

    我删除了 migrations/* 中的所有文件,并在本地和 heroku 上运行了迁移。

    python manage.py makemigrations python manage.py migrate

    这有助于解决 Heroku 上的迁移问题。

    【讨论】:

      【解决方案4】:

      遇到了同样的问题,简单地解决了:

      date = obj.date 
      
      time = obj.time 
      
      start_date = "%sT%s" % (date, time)
      

      【讨论】:

        【解决方案5】:

        使用这种日期格式

        import datetime
        datetime.datetime.now().strftime("%Y-%d-%m %H:%M:%S")
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-25
          • 2018-06-07
          • 2013-06-18
          • 1970-01-01
          • 2019-10-07
          • 1970-01-01
          • 2019-02-17
          • 2017-04-08
          相关资源
          最近更新 更多