У меня есть этот код в моем models.py
Я просто хочу, чтобы, как только администратор завершил заполнение StudentsEnrollmentRecord, он получал все связанные данные в ScheduleOfPayment и публиковал их в StudentsPaymentSchedule, поэтому у меня есть этот фильтр
scheduleofpayment = ScheduleOfPayment.objects.filter(Payment_Type=instance.Payment_Type,
Education_Levels=instance.Education_Levels,
Courses=instance.Courses)
/
class StudentsPaymentSchedule(models.Model):
Students_Enrollment_Records = models.ForeignKey(StudentsEnrollmentRecord, related_name='+',
on_delete=models.CASCADE, null=True, blank=True)
Payment_Schedule = models.CharField(max_length=500, null=True, blank=True)
Amount = models.FloatField(null=True, blank=True)
Student_Payment_Date = models.DateField(null=True, blank=True)
Paid_Amount = models.FloatField(default=0, null=True, blank=True)
Balance = models.FloatField(null=True, blank=True)
Remarks = models.TextField(max_length=500, null=True, blank=True)
@receiver(pre_save, sender=StudentsEnrollmentRecord)
def get_older_instance(sender, instance, *args, **kwargs):
try:
instance._old_instance = StudentsEnrollmentRecord.objects.get(pk=instance.pk)
except StudentsEnrollmentRecord.DoesNotExist:
instance._old_instance = None
print("dddd")
@receiver(post_save, sender=StudentsEnrollmentRecord)
def create(sender, instance, created, *args, **kwargs):
if not created:
older_instance = instance._old_instance
if older_instance.Payment_Type != instance.Payment_Type or \
older_instance.Education_Levels != instance.Education_Levels:
StudentsPaymentSchedule.objects.filter(
Students_Enrollment_Records=instance
).delete()
else:
return None
scheduleofpayment = ScheduleOfPayment.objects.filter(Payment_Type=instance.Payment_Type,
Education_Levels=instance.Education_Levels,
Courses=instance.Courses)
amounts = ScheduleOfPayment.Amount
date=ScheduleOfPayment.Date
sched = ScheduleOfPayment.Remark
for i , each in enumerate(scheduleofpayment):
amount = amounts[i]
date = date[i]
remarks = sched[i]
StudentsPaymentSchedule.objects.create(
Students_Enrollment_Records=instance,
Payment_Schedule = date,
Amount = amount,
Remarks = remarks
)
class StudentsEnrollmentRecord(models.Model):
Student_Users = models.ForeignKey(StudentProfile, on_delete=models.CASCADE, null=True)
School_Year = models.ForeignKey(SchoolYear, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Courses = models.ForeignKey(Course, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
strands = models.ForeignKey(strand, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Section = models.ForeignKey(Section, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Payment_Type = models.ForeignKey(PaymentType, related_name='+', on_delete=models.CASCADE, null=True)
Discount_Type = models.ForeignKey(Discount, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Education_Levels = models.ForeignKey(EducationLevel, related_name='+', on_delete=models.CASCADE, blank=True,
null=True)
ESC = models.ForeignKey(esc, on_delete=models.CASCADE, null=True, blank=True)
Student_Types = models.ForeignKey(student_type, related_name='+', on_delete=models.CASCADE, null=True, blank=True)
Remarks = models.TextField(max_length=500, null=True, blank=True)
class ScheduleOfPayment(models.Model):
Education_Levels = models.ForeignKey(EducationLevel, related_name='+', on_delete=models.CASCADE, blank=True,
null=True)
Courses = models.ForeignKey(Course, related_name='+', on_delete=models.CASCADE, blank=True, null=True)
Payment_Type = models.ForeignKey(PaymentType, related_name='+', on_delete=models.CASCADE, blank=True, null=True)
Display_Sequence = models.IntegerField(blank=True, null=True)
Date = models.DateField(null=True, blank=True)
Amount = models.IntegerField(null=True, blank=True)
Remark = models.CharField(max_length=500, blank=True, null=True)
что я пробовал
@receiver(pre_save, sender=StudentsEnrollmentRecord)
def get_older_instance(sender, instance, *args, **kwargs):
try:
instance._old_instance = StudentsEnrollmentRecord.objects.get(pk=instance.pk)
except StudentsEnrollmentRecord.DoesNotExist:
instance._old_instance = None
print("dddd")
@receiver(post_save, sender=StudentsEnrollmentRecord)
def create(sender, instance, created, *args, **kwargs):
if not created:
older_instance = instance._old_instance
if older_instance.Payment_Type != instance.Payment_Type or \
older_instance.Education_Levels != instance.Education_Levels:
StudentsPaymentSchedule.objects.filter(
Students_Enrollment_Records=instance
).delete()
else:
return None
scheduleofpayment = ScheduleOfPayment.objects.filter(Payment_Type=instance.Payment_Type,
Education_Levels=instance.Education_Levels,
Courses=instance.Courses)
amounts = ScheduleOfPayment.Amount
date=ScheduleOfPayment.Date
sched = ScheduleOfPayment.Remark
for i , each in enumerate(scheduleofpayment):
amount = amounts[i]
date = date[i]
remarks = sched[i]
print("wara")
StudentsPaymentSchedule.objects.create(
Students_Enrollment_Records=instance,
Payment_Schedule = date,
Amount = amount,
Remarks = remarks
)
это ошибка, которую я получаю