我在我的模型中添加了一个DecimalField
dec_field = models.DecimalField(max_digits=6, decimal_places=3)
在我尝试使用South创建自动模式迁移文件后,我尝试指定现在用于现有列的一次性值,但是......
? Please enter Python code for your one-off default value.
? The datetime module is available, so you can do e.g. datetime.date.today()
>>> Decimal('15.4')
! Invalid input: name 'Decimal' is not defined
>>> from decimal import *
! Invalid input: invalid syntax (<string>, line 1)
我可以指定一个Decimal默认值(无损,所以float不理想),如果是这样的话怎么样?
2 回答
看代码:: https://bitbucket.org/andrewgodwin/south/src/81b93bfc927b46227103d094691b5ddcfc25f400/south/creator/actions.py?at=default#cl-190
我试过这样做:
并且工作
但这很奇怪,最正确的只是把它自动转换成一个字符串
或导入十进制,因为南迁移创建
接受的答案确实很奇怪 .
正确的答案是,根据设计,南方迁移是用户可编辑的,并且
schemamigration --auto
并不总能完成一项完美的工作 . 在这种情况下,我只需输入一个易于在文件中找到的值(例如,'0.445'
),然后编辑文件,为Decimal
添加正确的导入并修改代码以使用Decimal('0.445')
而不是生成的迁移中的值 .