0

我有一些遗留的 oracle 数据库,我对其运行 inspectdb 命令。数据库中的一列具有 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?

4

1 回答 1

0

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

于 2012-10-24T09:01:51.213 回答