Python Django保存覆盖递归不工作

Python Django保存覆盖递归不工作,python,django,Python,Django,我正试图建立一个促销代码系统,让符合条件的用户/学生自动申请(由M2M或逗号分隔的电子邮件字符串指定) 以下是模型中的相关代码: class PromoCode(models.Model): students_claimed = models.ManyToManyField('Student', blank=True, related_name='promo_codes_claimed') claimable_by = models.ManyToManyField('Studen

我正试图建立一个促销代码系统,让符合条件的用户/学生自动申请(由M2M或逗号分隔的电子邮件字符串指定)

以下是模型中的相关代码:

class PromoCode(models.Model):
    students_claimed = models.ManyToManyField('Student', blank=True, related_name='promo_codes_claimed')
    claimable_by = models.ManyToManyField('Student', blank=True, related_name='claimable_promo_codes')
    claimable_by_emails = models.CharField(max_length=10000, null=True, blank=True)

    def save(self, *args, **kwargs):
        if self.claimable_by_emails:
            for email in self.claimable_by_emails.split(','):
                try:
                    student = Student.objects.get(user__email=email)
                    student.claim_promo_code(self)
                except Student.DoesNotExist:
                    pass

        for student in self.claimable_by.all():
            student.claim_promo_code(self)

        super().save(*args, **kwargs)
Student
中的
claim\u promo\u code
方法如下:

def claim_promo_code(self, promo_code):
    if promo_code.is_claimable_by(self):
        promo_code.students_claimed.add(self)
        promo_code.save()

        print('TEST')
我知道正在调用
claim\u promo\u code
方法,因为print语句正在运行;但是,未将用户添加/保存到
学生
。通过其他方式调用
claim\u promo\u code
方法(在
save
方法之外)可以正常工作


调用对象本身的
save
方法是否有问题,这里就是这样?我应该如何解决这个问题?

什么是“可索赔”呢?不要这样做。要将促销代码链接到学生对象,请使用ManyToManyField。什么是“is\u claimable\u by”do?不要这样做。要将促销代码链接到学生对象,请使用ManyToManyField。