У меня есть Django модель:
from accounts.models import Account
class BankOperation(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
account = models.ForeignKey(Account, on_delete=models.CASCADE)
operation_import = models.FloatField(default=0.0)
Я хочу убедиться, что operation_import
не выше, чем account.balance
Каков официальный путь к этому? Я видел некоторые ответы, говорящие о переопределении метода save (), но другие советуют против него.
следует ли добавить сигнал предварительного сохранения и выдать какое-то исключение?
Есть ли способ создать валидатор поля, который принимает параметры? поэтому может быть что-то вроде:
def validate_bank_operation_import(value, account_balance):
if value > account_balance:
raise ValidationError("Bank operation import is higher than account balance!")
и внутри моей модели я изменяю поле на:
operation_import = models.FloatField(default=0.0, validators=[validate_bank_operation_import])
Но могу ли я передать параметры в валидатор? если да, как мне это сделать?
возможно, есть еще кто-нибудь, чтобы сделать эту проверку!