Как использовать getlist () в django - PullRequest
0 голосов
/ 31 января 2020

как вы можете видеть в моем views.py У меня есть 3 цикла и 3 getlist (), но только одна таблица используется для сохранения данных

for amount in request.POST.getlist('amount'):
  pass
for date in request.POST.getlist('date'):
  pass

for each in request.POST.getlist('remark'):
        insert_StudentPaymentSchedules = StudentPaymentSchedules(
                Students_Enrollment_Records =  V_insert_data,
                Amount = amount,
                Payment_Schedule = date,
                Remarks = each
            )
        insert_StudentPaymentSchedules.save()

это результат

enter image description here

, если вы, ребята, заметили, что замечания верны, а График платежей и Сумма неверен, У меня проблема с зацикливанием 3 getlist ()

models.py

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.FloatField(null=True, blank=True)
    Remark = models.CharField(max_length=500,blank=True, null=True)

class StudentPaymentSchedules(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(null=True,blank=True)
    Balance = models.FloatField(null=True,blank=True)
    Remarks=models.TextField(max_length=500,null=True,blank=True)

ОБНОВЛЕНИЕ полная трассировка

enter image description here

1 Ответ

0 голосов
/ 31 января 2020

Это потому, что вы вообще не обрабатываете amount и date. Нет смысла пересекать их только на pass. Попробуйте это:

amounts = request.POST.getlist('amount')
dates = request.POST.getlist('date')
for i, remark in enumerate(request.POST.getlist('remark')):
    amount = amounts[i]
    date = dates[i]
    insert_StudentPaymentSchedules = StudentPaymentSchedules(
            Students_Enrollment_Records =  V_insert_data,
            Amount = amount,
            Payment_Schedule = date,
            Remarks = remark,
        )
    insert_StudentPaymentSchedules.save()

В качестве несвязанной заметки попробуйте придерживаться принципов именования PEP-8 (например, переменные и атрибуты должны быть в нижнем регистре, только имена классов должны быть в CamelCase).

...