【发布时间】:2017-02-08 21:57:59
【问题描述】:
我有一个具有以下型号的 django 应用程序:
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)
在尝试运行简单迁移时,我不断收到此错误:
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
我遇到的问题是,我不明白为什么它试图将双精度转换为没有时区的时间。我不希望它。我不太确定还能尝试什么。我尝试过以下操作:
SELECT CAST(elapsed_time as double precision) FROM event;
我还尝试将 elapsed_time 字段更改为整数并得到相同的错误(引用整数而不是双精度)。所以我知道这是那个特殊的领域。
我已删除所有迁移并尝试重新开始。那没有用。
有什么想法吗?
更新:来自 pgadmin 的已用字段的属性:
【问题讨论】:
标签: django postgresql django-models casting postgresql-9.4