У меня есть поле с набором max_length
. Когда я сохраняю экземпляр модели, а значение поля больше, чем max_length
, Django применяет этот параметр max_length
на уровне базы данных. (См. Django docs на моделях: http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.CharField.max_length)
Однако, поскольку я использую Postgres, я получаю исключение DatabaseError
, подобное этому:
DatabaseError: value too long for type character varying(1000)
Я бы предпочел вместо этого автоматически обрезать значение (поэтому у меня нет исключения). Теперь я могу сделать это вручную, но я бы очень хотел, чтобы все мои модели автоматически усекали значение. (Не обязательно разумно. Просто отрезать его на 999-м символе в порядке.)
Должен ли я просто написать пользовательский класс, который импортирует из models.Model и переопределить метод save(), перебирать через каждое _meta.field, проверять max_length и затем усекать? Это кажется неэлегантным, и должен быть лучший способ.