2017-02-08 10 views
0

タイムゾーンのない時間に倍精度型にキャストすることはできません。ProgrammingError:私は、次のモデルとDjangoのアプリを持っている

File "/home/icar/E-Django/venv/local/lib/python2.7/site-packages/django/db/utils.py", line 95, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/home/epicar/E-Django/venv/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
django.db.utils.ProgrammingError: cannot cast type double precision to time without time zone 

class Event(models.Model): 
    # id = models.IntegerField(primary_key=True) 
    event_type = models.ForeignKey(
     EventType, 
     on_delete=models.DO_NOTHING, 
     # we don't want to delete anything in the StatusType table. 
     blank=True, 
     null=True, 
    ) 
    reason_code = models.IntegerField(default=0) 
    elapsed_time = models.IntegerField(default=0) 
    event_at = models.DateTimeField("Event Time", blank=True, auto_now_add=True) 
    object_id = models.ForeignKey(Machine, on_delete=models.DO_NOTHING,) 
    count = models.BigIntegerField(blank=True, null=True) 
    position = models.IntegerField(blank=True, null=True) 
    rfid_tag = models.ForeignKey(Employee, blank=True, null=True, on_delete=models.DO_NOTHING, 
           verbose_name='User Name') 
    hidden = models.BooleanField(default=False) # for hiding from lists 

    # def __str__(self):    # __unicode__ on Python 2 
    #  return self.event_type 

    class Meta: 
     verbose_name = 'event' 
     verbose_name_plural = 'Events' 

    def __str__(self): 
     return str(self.id) 

簡単な移行を実行しようとしますが、私はこのエラーを得続けます

この問題は、タイムゾーンなしで倍精度に時間を詰め込もうとしているのですが、わかりません。私はそれが欲しくない。私は他に何を試みるかについてはあまりよく分かりません。私は、次の操作を実行しようとしている:

SELECT CAST(elapsed_time as double precision) FROM event; 

私も整数にelapsed_timeのフィールドを変更しようとした(代わりに、倍精度の整数を参照)と同じエラーを得ました。だから私はそれがその特定の分野であることを知っています。

すべての移行を削除して新しく起動しようとしました。それはうまくいかなかった。

アイデア?

更新:pgAdminでからの経過フィールドのプロパティ:

enter image description here

答えて

0

私が正しく理解していれば、あなたがこれを見て:

SELECT extract(epoch FROM now()); 
+0

これは正確には何ですか? – Nicoale

+0

エポックからの秒数(1970-01-01 00:00:00)または間隔からの秒数を取得します。タイムスタンプまたは間隔を倍精度にする方法は1つだけです –

+0

hmmm ...そのフィールドに入るデータは技術的に経過秒です。それはそれがエラーをスローする原因になるだろうか?実際のタイムスタンプは取得していません。我々はしたくない。経過秒数を表示して、計算を行うことができます。単純な数値(時間フィールドではありません)の形で表します。私はあなたが時間欄で計算を行うことができることを知っています。 – Nicoale

0

はそれを考え出しました。

フィールドタイプの変更::)これは、Djangoの側にあることになった

elapsed_time = models.TimeField(blank=True, auto_now_add=True) 

これは、ジャンゴとPostgresのフィールドタイプの競合の世話をしました。

System check identified no issues (0 silenced). 
February 09, 2017 - 16:34:59 
Django version 1.9, using settings 'E-Django.settings' 
Starting development server at http://127.0.0.1:8000/ 
Quit the server with CONTROL-C. 

すべての機能が正常に動作しています。

関連する問題