当我最初布置我的桌子时,我出于任何理由使用PositiveIntegerField付出代价。现在我把它改成了DecimalField,这更有意义。
迁移在本地工作(sqlite)并且似乎在我的开发服务器上成功了。但是,迁移对我的postgres开发服务器没有影响。
这是迁移命令的输出。
DJANOG_SETTINGS_MODULE=runner.dev_settings ./manage.py migrate
Operations to perform:
Apply all migrations: userprofiles, sessions, admin, sites, auth, contenttypes, inventory
Running migrations:
Applying inventory.0004_auto_20150613_1446... OK
迁移后,这是pgsql中的模式。
Table "public.inventory_baseitem"
Column | Type | Modifiers
-----------------+------------------------+-----------------------------------------------------------------
id | integer | not null default nextval('inventory_baseitem_id_seq'::regclass)
title | character varying(100) | not null
price | integer | not null
units | integer | not null
weight_lbs | integer | not null
weight_ozs | integer | not null
content_type_id | integer | not null
...
正如您所看到的,价格列的类型仍然是整数。 令人沮丧的是,如果我重新运行迁移,django说没有可以应用的迁移。
虽然这不是一个生产环境,但如果最坏的情况发生,我可以做一个手动转换表。这样做会破坏django迁移的目的。
根据反馈,我的django版本是1.7。 我的迁移如下:
class Migration(migrations.Migration):
dependencies = [
('inventory', '0003_auto_20150613_1439'),
]
operations = [
migrations.AlterField(
model_name='baseitem',
name='price',
field=models.DecimalField(default=0, max_digits=20, decimal_places=2),
),
]
我会尝试升级我的django版本是不会带来太多重大变化。