я получаю «Значение вне диапазона, скорректированное для столбца»
не уверен, есть ли исправление для этого в django
Вы должны создать настраиваемое поле, унаследованное от Field или IntegerField
class BigintField(models.Field): def db_type(self): return 'BIGINT(20)' ...
и
class MyModel(models.Model): bigid = BigintField()
Для современных версий Django используйте models.BigIntegerField. Он поддерживает большие значения.
models.BigIntegerField
Джанго билет № 399 имеет дело с этим. Я также открыл аналогичный вопрос довольно давно.
Обходной путь, который я использовал в прошлом, заключается в простом ALTER соответствующем поле непосредственно в таблице БД до BIGINT (для MySQL, например). Однако обратите внимание, что если вы сбросите приложение, в котором существует конкретная модель с конкретным полем, или удалите таблицу и заново создадите ее любым способом, вам придется снова ALTER поле.
ALTER
BIGINT
Для югов, встроенный в django DecimalField может работать лучше, чем пользовательский подход BigintField, описанный выше. Похоже, нужно немного поработать, чтобы научить Юга о пользовательских типах полей.