Django: Странное поведение: каждый раз, когда передается объект datetime, он сохраняется как кортеж. Не бывает всегда - PullRequest
0 голосов
/ 10 октября 2019

Я испытываю странное поведение в моем файле views.py:

в моей модели пользователя у меня есть

date_something = models.DateTimeField(blank=True, null=True)

Ниже приведен код, связанный с views.py

Вывод
match = User.objects.get(email='test@test.com')
time_now = datetime.datetime.now(tz=pytz.timezone("UTC"))
match.date_something = time_now,
match.date_something2 = time_now,
# just want to check whats is stored from above line
check = match.date_something
locals()['check']

: в консоли сервера запуска

(datetime.datetime(2019, 10, 10, 8, 20, 10, 787399, tzinfo=<UTC>),)

Итак, мы видим, что check является tuple.

Из-за этого, когда я пытаюсь сохранить модель

match.save()

, он говорит TypeError: expected string or bytes-like object

Я проверил этот код в данго Shell_plus и он даетправильные результаты.

In [2]: import datetime 
   ...: import pytz 
   ...:  
   ...: match = User.objects.get(email='test@test.com') 
   ...: match.date_something = datetime.datetime.now(tz=pytz.timezone("UTC")) 
   ...: check = match.date_something 
   ...:  
   ...: locals()['check']                                                                                                                                                             
Out[2]: datetime.datetime(2019, 10, 10, 8, 25, 59, 533597, tzinfo=<UTC>)

НАЙТИ ПРОБЛЕМУ

Я добавлял запятую в конце этой строки в views.py, поэтому она сохранялась как кортеж.

match.date_something = time_now,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...