![](/img/trans.png)
[英]ValidationError at ["“<class 'datetime.timezone'>” 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."]
再會。 我有一個搜索數據庫中項目的 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."]
您檢查了是否有任何參數不是 None。 但是,如果開始日期或結束日期都為 None,則該檢查將通過,但查詢將失敗並顯示您看到的錯誤。 在過濾它們之前,您需要檢查開始日期和結束日期都不是無。
我在 heroku 上部署代碼時遇到了類似的問題。
更正我的模型屬性后
models.DateField(blank=True, null=True,default=datetime.date.today)
我刪除了 migrations/* 中的所有文件,並在本地和 heroku 上運行了遷移。
python manage.py makemigrations
python manage.py migrate
這有助於解決 Heroku 上的遷移問題。
出現這個錯誤的原因很可能是因為 Django 期望 DateTimeField 值采用YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
格式,而您之前可能使用strftime
其格式化為字符串,以便 Django無法正確識別哪個數字代表相應的日期時間變量(年、月、日、小時、分鍾、秒、時區)。
您可以通過使用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")
你以前用過的地方。
遇到了同樣的問題,並簡單地通過以下方式解決了它:
date = obj.date
time = obj.time
start_date = "%sT%s" % (date, time)
我用這個解決了這個問題
datetime.strptime(request.POST['date'], "%Y-%m-%dT%H:%M")
使用此日期格式
import datetime
datetime.datetime.now().strftime("%Y-%d-%m %H:%M:%S")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.