Python Django保存覆盖递归不工作
我正试图建立一个促销代码系统,让符合条件的用户/学生自动申请(由M2M或逗号分隔的电子邮件字符串指定) 以下是模型中的相关代码: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
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。