gpt4 book ai didi

python - Django:覆盖保存(模型或管理部分)

转载 作者:行者123 更新时间:2023-12-01 04:11:11 24 4
gpt4 key购买 nike

我最近一直在使用 Django,但是我一直不知道如何解决这个问题。我有一个“人”模型,它与“优惠券”模型具有一对多的关系。现在该人有一个配额,每生成一张优惠券,配额就会减少一个。我坚持的是通过 save 方法来做到这一点。那么如何做到这一点呢?

以下是我的模型:

class Person(AbstractDetail):
# Note: Model to maintain information about Person
vc = models.IntegerField(default = 3, verbose_name = 'Vouchers',
null = False, validators = [ validate_voucher ])

class Voucher(models.Model):
# Note: Model to maintain information about Voucher
vc = models.CharField (max_length = 25, verbose_name = 'Voucher ID',
help_text = 'Voucher Identifier')
ps = models.ForeignKey(Person, on_delete = models.CASCADE,
verbose_name = 'Person')

最佳答案

不要在save()中执行此操作,它很容易与 django 混淆。尝试使用 django 信号 post_save():

from django.db.models.signals import post_save

@receiver(post_save, sender=Voucher)
def decrease_quota(sender, instance, created, *args, **kwargs):
if created:
instance.vc -= 1
instance.save()

检查django doc用于 django 信号。

关于python - Django:覆盖保存(模型或管理部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34932300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com