Значение вне диапазона скорректировано для предупреждения столбца в django при добавлении большого целого числа (11 символов) - PullRequest
3 голосов
/ 28 мая 2009

я получаю «Значение вне диапазона, скорректированное для столбца»

не уверен, есть ли исправление для этого в django

Ответы [ 4 ]

4 голосов
/ 28 мая 2009

Вы должны создать настраиваемое поле, унаследованное от Field или IntegerField

class BigintField(models.Field):
    def db_type(self):
        return 'BIGINT(20)'
...

и

class MyModel(models.Model):
    bigid = BigintField()
2 голосов
/ 23 августа 2013

Для современных версий Django используйте models.BigIntegerField. Он поддерживает большие значения.

1 голос
/ 28 мая 2009

Джанго билет № 399 имеет дело с этим. Я также открыл аналогичный вопрос довольно давно.

Обходной путь, который я использовал в прошлом, заключается в простом ALTER соответствующем поле непосредственно в таблице БД до BIGINT (для MySQL, например). Однако обратите внимание, что если вы сбросите приложение, в котором существует конкретная модель с конкретным полем, или удалите таблицу и заново создадите ее любым способом, вам придется снова ALTER поле.

0 голосов
/ 05 января 2010

Для югов, встроенный в django DecimalField может работать лучше, чем пользовательский подход BigintField, описанный выше. Похоже, нужно немного поработать, чтобы научить Юга о пользовательских типах полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...