Что означает ошибка Django «ожидаемая строка или буфер»? - PullRequest
0 голосов
/ 29 ноября 2010

Я застрял с этой ошибкой довольно долго, и я просто не могу понять, что это значитЭто происходит, когда я пытаюсь сохранить объект в моей базе данных mysql.Есть идеи?

Спасибо за помощь!

Ответы [ 6 ]

26 голосов
/ 04 июля 2011

Просто столкнулся с той же проблемой и решил ее.Я создал такую ​​форму:

data = {'date' : datetime.now} #this is the problem
form = MyForm(data)

Эта форма была сохранена позже, и django попытался установить «дату» в модели.Но datetime.now относится к функции, а не к дате, очевидно.То, что я хотел сделать, было datetime.now ()

Может быть, это поможет кому-нибудь столкнуться с этим в будущем.

7 голосов
/ 29 ноября 2010

Это, вероятно, означает, что Python пытается выполнить код, который ожидает определенный тип данных (bool, string, int и т. Д.), Но предоставляется другой, неправильный, тип данных.

1 голос
/ 05 августа 2015

В моем случае это было, когда я использую библиотеку «время» для преобразования строки даты в объект даты и времени.Я просто использую «datetime.strptime» вместо «time.strptime», и проблема исчезла.

0 голосов
/ 17 мая 2018

Валидатор datetime в django находится в файле:

/path/to/project/venv/lib/python2.7/site-packages/django/utils/dateparse.py

или в пакетах site вашего текущего интерпретатора python.
Загляните туда, чтобы увидеть регулярные выражения.В моем случае способ ее решения был:

ended=datetime.fromtimestamp(time.time())
other=datetime.fromtimestamp(time.time())

# in the model:
ended = models.DateTimeField(blank=True, null=True) # or
other = models.DateTimeField(auto_now_add=False, blank=True)

оба работают.

0 голосов
/ 30 июня 2017

'expiration' - это поле

expiration = models.DateTimeField(default=7)

И код с ошибкой был таким:

ex = timedelta(minutes=expiration)                      
authobj, created = cls.objects.update_or_create(                         
    operator=operator,                                                   
    defaults={'transport':transport,'token':cls.generate_key(40),'expiration':ex}
)                                                                        

И это было решено, установив его следующим образом (вместо timedelta, aдата)

ex = datetime.now() + timedelta(minutes=expiration)                      
authobj, created = cls.objects.update_or_create(                         
    operator=operator,                                                   
    defaults={'transport':transport,'token':cls.generate_key(40),'expiration':ex}
)                                                                        
0 голосов
/ 04 сентября 2013
str(yourvar)

Ou может конвертировать ваши переменные.

...