Как использовать Get List from POST Data - Django - PullRequest
0 голосов
/ 10 января 2020

Надеюсь, заголовка достаточно, чтобы понять, в чём моя проблема

enter image description here

Это мой код в html

когда я пытался сохранить это в своей базе данных, только «6» сохраняется, как на картинке

enter image description here

Я использую jquery для генерации дата и текстовое поле для ввода оценки

это мой html

<table  id="blacklistgrid" border="2px">
      <tr>
          <th id="th">Students Name</th>
          <th data-id='headers' id='header'>Average</th>
      </tr>
      {% for student in teacherStudents %}
      <tr class="tr2">
          <td class="td" ><input type="text" name="students" value="{{student.id}}" id="student" >{{student.Students_Enrollment_Records.Student_Users}}</td>
           <td data-id='row' id="ans"><input type='number' class='averages'  readonly/></td>
      </tr>
      {% endfor %}
</table>

<script>
     var counter = 0;
    function doTheInsert(){

        let header=$("tr#tr");  // same as $.find("tr[id='tr2']")
        $('#th').after("<th data-id='headers' id='header'><input type='date' name='date'></th>");
        var rows=$(".tr2");
        $("<td data-id='row' ><input type='number' name='gradeko' class='average' /></td>").insertAfter(".td");
        counter++;
    }
    </script>

это мой views.py

for gradeko in request.POST.get('gradeko'):
    pass

for students in request.POST.getlist('students'):
    studentss = StudentsEnrolledSubject(id=students)
    date = request.POST.getlist('date')

    V_insert_data = studentsEnrolledSubjectsGrade(
        Teacher=teacher,
        Students_Enrollment_Records=studentss,
        Date=date,
        Grade=gradeko
    )
    V_insert_data.save()

это мой model.py

class studentsEnrolledSubjectsGrade(models.Model):
    Teacher = models.ForeignKey(EmployeeUser, related_name='+', on_delete=models.CASCADE,
                                                null=True,blank=True)
    Subjects = models.ForeignKey(Subject, related_name='+', on_delete=models.CASCADE, null=True)
    Students_Enrollment_Records = models.ForeignKey(StudentsEnrolledSubject, related_name='+',on_delete=models.CASCADE, null=True)
    Grading_Categories = models.ForeignKey(gradingCategories, related_name='+', on_delete=models.CASCADE,
                                                null=True,blank=True)
    Date = models.DateField(null=True, blank=True)
    Grade = models.FloatField(null=True, blank=True)

что я пробовал

global gradekos, dates
    for gradeko in request.POST.getlist('gradeko'):
    gradekos = gradeko
    pass
    print(gradekos)
for date in request.POST.getlist('date'):
    dates = date
    pass
for students in request.POST.getlist('students'):
    studentss = StudentsEnrolledSubject(id=students)
    #date = request.POST.get('date')

    V_insert_data = studentsEnrolledSubjectsGrade(
        Teacher=teacher,
        Students_Enrollment_Records=studentss,
        Date=dates,
        Grade=gradekos
    )
    V_insert_data.save()

ОБНОВЛЕНИЕ когда я пробовал две даты, только 1 дата сохранялась в базе данных

enter image description here

enter image description here

например

enter image description here

это это то, что я хочу результат

enter image description here

это фактический результат

enter image description here

1 Ответ

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

вы устанавливаете gradekos = gradeko, так что он просто переопределяет gradekos с вашим предыдущим значением (это go для дат тоже). Таким образом, вам нужно получить все значения каждого объекта внутри массива и l oop через него, чтобы получить действительные значения позиции

gradekos = []
dates = []
for gradeko in request.POST.getlist('gradeko'):
    gradekos.append(gradeko)
for date in request.POST.getlist('date'):
    dates.append(date)

i=0
for single_date in dates:

   for student in request.POST.getlist('students'):
      students = StudentsEnrolledSubject(id=student)

      V_insert_data = studentsEnrolledSubjectsGrade(
      Teacher=teacher,
      Students_Enrollment_Records=students,
      Date=single_date,
      Grade=gradekos[i]
      )
      V_insert_data.save()
      i += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...