2009-05-13 9 views
4

人のdatetimeオブジェクトを追加しようとしています。出生年が1942年未満のときはいつでも、DBからデータを読み戻すときに奇妙なエラーDataError: unable to parse timeが発生します。Djangoの日時の問題

class Person(models.Model): 
    """A simple class to hold the person info 
    """ 
    name = models.CharField(max_length=100) 
    born = models.DateTimeField(blank=True, null=True) 

私は1929年に生まれた人の生まれdatetimeオブジェクトを追加し、それを読もうとしてみてくださいたびに、それは失敗します。

データの挿入は正常に動作しますが、読み取り中は失敗します。私はDB内で何かが間違っていると仮定しています。

私は一連のテストを行なったし、私が年1940年以前に生まれた人は、それは私は、PostgreSQLを使用していますDataError: unable to parse time

を与える追加するたびに、それが失敗したことを知りました。

何か助けていただければ幸いです。ありがとう。

+0

私はこれを全く複製できません(postgresql 8.3、psycopg2 2.0.3、django 1.0 final、python 2.5)。どのバージョンのPostgresを使用していますか、どのバージョンのドライバですか? –

+0

バージョンはpsql(PostgreSQL)8.3.7、 – aatifh

答えて

6

ここで私が思いつくことができるのはPostgreSQL docsです。私の推測では、Djangoはあなたの日付を「reltime」フィールドに格納しています。これは68年前にしか戻れません。私の電卓は、2009-68 == 1941年であることを確認しています。これはあなたが報告したものに非常に近いと思われます。

私は、次のコマンドを実行して、あなたのテーブルのスキーマを見ている推薦する:私が疑われるとして、問題の日付フィールドは「reltimeに」フィールドであれば

$ python manage.py sql appname 

を参照してください。このような場合、私はすべてを邪魔することなく、より互換性のあるフィールドに変更する方法を失っています。

+0

です。タイムゾーンNULLの「生まれた」タイムスタンプをチェックしました。 – aatifh

+0

@bluejeansummerねえ、この問題を取り除く方法はまだ見つかりませんでした。 – aatifh

+0

私は私は通常、PostgreSQLに精通していません。私は通常、django用にSQLiteまたはMySQLを使用していますので、まだ試していないものはお勧めできません。 –