скажем, у меня есть эта модель:
class MyModel(models.Model):
char_field = models.CharField(max_length=64)
json_field = LimitedJSONField(default={})
где LimitedJSONField
- это настраиваемое поле для хранения JSONStrings в БД.
Я хотел бы выполнить проверку перед сохранением на json_field
(например, обрезать его длину, если она больше). Я читал о переопределении метода save
для MyModel
, я также знаю, что могу реализовать сигнал pre-save
, но я бы хотел обработать его на уровне поля. Скажем, я использую LimitedJSONField
на 500 моделях. Нужно ли переопределять метод save
для каждой из этих 500 моделей? Я реализовал метод validate
в LimitedJSONField
, но он не запускается при сохранении (он запускается только при проверке формы, т.е. full_clean
подпрограмма).
Как я могу реализовать валидатор для LimitedJSONField
, чтобы, если бы Model
его использовал, это поле было проверено в отношении одной единственной бизнес-логики, написанной внутри LimitedJSONField
?
Проще говоря, я хотел бы реализовать логику в классе field
, и я бы хотел, чтобы в классе Model не было написано никакой логики, чтобы решение было масштабируемым, чтобы новые классы Model могли использовать это поле без необходимости реализовывать кипящую среду. логический код.
Большое спасибо за ваше время!