Как получить ORACLE NUMBER с помощью syncdb

У меня есть устаревшая база данных оракула, для которой я запускаю команду 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 в модели, чтобы получить NUMBER, сгенерированный в оракуле?


person mnowotka    schedule 17.10.2012    source источник


Ответы (1)


Кажется, я понял ответ. Похоже, что django на самом деле очень умен и специально создает эти проводные значения. Цель состоит в том, чтобы предотвратить создание модели из этой схемы без просмотра разработчиком. Это имеет смысл, так как обычно использование типа NUMBER без масштаба и точности оставляет django без понятия, каким на самом деле должно быть это поле. NUMBER является наиболее универсальным числовым типом и может соответствовать логическим значениям, целым числам со знаком и без него, а также числам, которые должны быть с плавающей запятой. Вот почему здесь необходимо обоснованное решение от разработчика.

person mnowotka    schedule 24.10.2012