Django 1.4 TimeField迁移在PostgreSQL上失败

Yuv*_*dam 4 django postgresql django-models django-south django-1.4

我在模型上编辑了两个字段,并将它们从IntegerFields 更改为TimeFields:

class Model(models.Model):
    start_time = models.TimeField()
    end_time = models.TimeField()
Run Code Online (Sandbox Code Playgroud)

我正在使用这两个字段来保存一个天真的时间,这与任何地理时间概念无关,因此没有真正的"时区"(想想类似于比赛时间的东西).我的本地数据库是PostgreSQL.

但是,此更改生成的南迁移失败,并出现以下错误:

> main:0005_auto__chg_field_model_start_time__chg_field_model_end_time
FATAL ERROR - The following SQL query failed: ALTER TABLE "main_model" ALTER COLUMN "start_time" TYPE time, ALTER COLUMN "start_time" SET NOT NULL, ALTER COLUMN "start_time" DROP DEFAULT;

...

File ".../lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 52, in execute
    return self.cursor.execute(query, args)
django.db.utils.DatabaseError: column "start_time" cannot be cast to type time without time zone
Run Code Online (Sandbox Code Playgroud)

迁移失败的原因如下:

class Migration(SchemaMigration):

    def forwards(self, orm):

        # Changing field 'Model.start_time'
        db.alter_column('main_model', 'start_time', self.gf('django.db.models.fields.TimeField')())

        # Changing field 'Model.end_time'
        db.alter_column('main_model', 'end_time', self.gf('django.db.models.fields.TimeField')())
Run Code Online (Sandbox Code Playgroud)

关于如何让postgres对这次迁移感到高兴的任何想法?

PS我正处于开发阶段,所以我真的不关心任何数据迁移.您可以假设数据库为空.

Mac*_*sch 5

由于您不关心数据,最简单的方法是删除列,然后再次使用类型添加Time.

手动编辑当前迁移以执行此操作.或删除此迁移,然后注释该字段并运行,schemamigration --auto然后添加该字段并再次运行它.