Я получаю "Значение вне допустимого диапазона, скорректированное для столбца"

Не уверен, есть ли исправление в django

3
Rasiel 28 Май 2009 в 10:15

4 ответа

Лучший ответ

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

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

А также

class MyModel(models.Model):
    bigid = BigintField()
4
N. Aff 28 Май 2009 в 07:41

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

0
softmechanics 5 Янв 2010 в 00:44

Билет Django № 399 касается этого. Некоторое время назад я также открыл аналогичный вопрос.

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

2
Community 23 Май 2017 в 12:19

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

3
vdboor 23 Авг 2013 в 15:59