首页 > 解决方案 > 覆盖 Django 中的保存和清理方法

问题描述

你好,我有StoreCheckout模型,我覆盖了保存和清理方法,但覆盖方法中的条件不起作用。

class StoreCheckout(models.Model):
    store = models.ForeignKey(
        to=Store,
        on_delete=models.CASCADE,
        limit_choices_to={
            'is_confirm': True
        },
    )
    pay_date = models.DateTimeField()
    amount = models.PositiveBigIntegerField()
    bank_number = models.PositiveBigIntegerField(validators=[bank_number_validate])

    def __str__(self):
        return self.store.name

    def save(self, *args, **kwargs):

        if not self.bank_number:
            self.bank_number = self.store.bank_number

        if not self.pay_date:
            self.pay_date = datetime.now()

        super(StoreCheckout, self).save(*args, **kwargs)

    def clean(self, *args, **kwargs):
        if not settings.MIN_CHECKOUT <= self.store.wallet <= settings.MAX_CHECKOUT:
            raise ValidationError(
                f'amount of your store must between {settings.MIN_CHECKOUT} and {settings.MAX_CHECKOUT} toman'
            )

        super(StoreCheckout, self).save(*args, **kwargs)

标签: pythondjangodjango-models

解决方案


推荐阅读