В models.py :
Код: Выделить всё
class handoff_model(models.Model):
batch = models.ForeignKey(batch_def_model, on_delete=models.CASCADE)
date = models.DateField(blank=True, null=True)
class batch_def_model(models.Model):
name = models.CharField(max_length=200)
start_time = models.TimeField(blank=True, null=True)
Код: Выделить всё
def ho_open(request):
date = '2019-07-29'
all_b = batch_def_model.objects.all()
for b in all_b:
if not handoff_model.objects.filter(date=date, batch=b.name).exists():
batch = handoff_model(batch=b, date=date)
batch.save()
handoff_list = handoff_model.objects.filter(date=date,batch__start_time__lt='08:00')
return handoff_list
Когда я устанавливаю дату как «2019-07-29» работает правильно. С датой «2019-07-30» или «2019-07-31» я получаю следующую ошибку:
Полная трассировка:
Код: Выделить всё
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 248, in __repr__
data = list(self[:REPR_OUTPUT_SIZE + 1])
File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 272, in __iter__
self._fetch_all()
File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 1179, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 53, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1068, in execute_sql
cursor.execute(sql, params)
File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py", line 100, in execute
return super().execute(sql, params)
File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py", line 68, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 71, in execute
return self.cursor.execute(query, args)
File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 250, in execute
self.errorhandler(self, exc, value)
File "/usr/local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 247, in execute
res = self._query(query)
File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 412, in _query
self._post_get_result()
File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 416, in _post_get_result
self._rows = self._fetch_row(0)
File "/usr/local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 384, in _fetch_row
return self._result.fetch_row(size, self._fetch_type)
File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py", line 151, in typecast_time
return datetime.time(int(hour), int(minutes), int(seconds), int((microseconds + '000000')[:6]))
ValueError: hour must be in 0..23
ОТРЕДАКТИРОВАНО: я понял, что строки записываются правильно. Проблема заключается в попытке выбора в этой строке:
Код: Выделить всё
handoff_list = handoff_model.objects.filter(date=date,batch__start_time__lt='08:00')
Подробнее здесь: https://stackoverflow.com/questions/572 ... be-in-0-23