У меня есть поле с набором max_length
. Когда я сохраняю экземпляр модели, а значение поля больше max_length
, Django применяет это значение max_length
на уровне базы данных. (См. Django документы по моделям: 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, а затем обрезая? Это кажется не элегантным, и должен быть лучший способ.