2010-11-29 70 views
0

私はかなりの間、このエラーに悩まされていました。私はそれが何を意味するのか分かりません。これは、オブジェクトをmysqlデータベースに保存しようとしたときに発生します。何か案は?Djangoの "expected string or buffer"エラーは何を示していますか?

ありがとうございました!

+23

いいえ、クリスタルボールは機能しません。トレースバックとそれを生成するコードを投稿してください。 –

+2

あなたはコメントを投票できますように願っています。 –

+1

一般的なエラーの意味についての質問です。それを悪化させる必要はありません。 – Andrew

答えて

7

これは、Pythonが特定のデータ型(bool、string、intなど)を必要とするコードを実行しようとしているが、他の不正なデータ型が提供されている可能性があります。

25

同じ問題が発生して解決しました。フォームが後に保存されたとDjangoがモデルに「日付」を設定しようとしたこと

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

:私はこのようなフォームをインスタンス化。しかし、datetime.nowは明らかに日付ではなく関数を指しています。私がしたかったのはdatetime.now()

これは誰でもこれを将来実行するのに役立ちます。

+0

これは受け入れられたものよりはるかに良い答えです – Alvaro

+0

それはあまりにも具体的なので、私はそうは思わないです。 OPのエラーメッセージは、さまざまな状況で発生する可能性があります。 –

+0

日時解析を指してくれてありがとう。私の場合、このエラーは、モデルフィールドをDateFieldからDateTimeFieldに変更した後、マイグレーションを行い実行するのを忘れてしまったときにクエリセットに表示されました。 –

-1
str(yourvar) 

あなたの変数を変換することができます。

1

私の場合は、 "time"ライブラリを使って日付文字列をdatetimeオブジェクトに変換すると表示されました。私はちょうど "time.strptime"の代わりに "datetime.strptime"を使用し、問題はなくなりました。

0

「満了」このフィールドエラーで

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の日付)は、このようにそれを設定することによって解決された

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} 
)                   
関連する問題