0

inspectdbコマンドを実行するレガシーOracleデータベースがあります。DB の 1 つの列の型は 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 に答える