如何使用syncdb获取oracle NUMBER

时间:2012-10-17 09:22:00

标签: django oracle orm django-models django-database

我有一些遗留的oracle数据库,我运行的是inspectdb命令。 DB中的一列具有NUMBER类型(没有精度和比例)和 我从django得到的是:

entity_id = models.DecimalField(unique=True, null=True, max_digits=0, decimal_places=-127, blank=True)

如果我现在运行syndb尝试从模型生成模式,我会得到 错误:

Error: One or more models did not validate:
DecimalFields require a "decimal_places" attribute that is a non-negative integer.
DecimalFields require a "max_digits" attribute that is a positive integer.

我的问题是:我应该如何修改模型中的entity_id类型 在oracle中生成NUMBER?

1 个答案:

答案 0 :(得分:0)

我想我找到了答案。看起来django实际上非常聪明并且故意产生这种有线值。目标是在没有开发人员查看的情况下阻止从此模式创建模型。这是有道理的,因为通常使用没有比例和精度的NUMBER类型离开django而不知道该字段应该是什么。 NUMBER是最通用的数字类型,可以适合布尔值,有和没有符号的整数和应该是浮点的数字。这就是为什么需要开发人员做出明智的决定的原因。