Итак, я работаю над веб-сайтом на основе Django (Django 3), и я пытаюсь использовать файл для добавления определенных элементов в базу данных. При чтении файла и его данных работа выполняется плавно, но скрипт, кажется, внезапно останавливается на этой строке:
studentClass.student_set.add(student)
Прямо перед этим у меня есть такие строки, которые выполняются без проблем:
school = get_object_or_404(School, pk=form.cleaned_data['school'].pk)
studentClass, created = StudentClass.objects.get_or_create(
school=school,
name=form.cleaned_data['name'],
grade=form.cleaned_data['grade']
)
.
.
.
print("\nSUCCESS!\n")
print("\nAttempting to add {} to {}".format(
student,
studentClass))
studentClass.student_set.add(student) <---- SUSPECTED CULPRIT!
print("SUCCESS!")
Вывод оператора печати на консоль:
Attempting to add (<Student: 1 - Jessica>, False) to 1 - HenMei
РЕДАКТИРОВАТЬ: Я не видел этого в первый раз, но если это относится к вопросу и кому-то достаточно умному, чтобы знать, что это «Ложь "в строковом выводе выше есть объяснение. Второй оператор печати:
print("SUCCESS!")
не выполняется, поэтому я совершенно уверен, что
studentClass.student_set.add(student)
- это строка, вызывающая некоторые проблемы. Поскольку я новичок, я вполне могу ошибаться. РЕДАКТИРОВАТЬ: Просто чтобы убедиться, что то, как я действовал, не было частью проблемы, я также попытался переписать строку выше на:
student.studentClass.add(studentClass)
Но произошло то же самое; после этой строки также нет вывода.
Модели определяются следующим образом:
class StudentClass(models.Model):
school = models.ForeignKey(School, on_delete=models.SET_NULL, null=True)
name = models.CharField(max_length=25)
grade = models.PositiveSmallIntegerField(default=1)
class Meta:
ordering = ['grade', 'name']
def __str__(self):
return "{} - {}".format(self.grade, self.name)
class Student(models.Model):
studentClass = models.ManyToManyField(StudentClass)
student_number = models.PositiveSmallIntegerField()
first_name = models.CharField(max_length=50)
gender = models.CharField(max_length=6, default='Female')
class Meta:
ordering = [F('student_number').asc(nulls_last=True)]
def __str__(self):
return "{} - {}".format(self.student_number, self.first_name)
И последнее, но не менее важное: вот последняя строка, которая выводится на консоль:
[16/Jun/2020 18:14:06] "POST /teachadmin/addStudentClass/ HTTP/1.1" 302 0
Что мне мало что говорит, но я подумал, может быть, вам, профессионалам, это может понадобиться: P
Есть идеи, что я делаю неправильно? Заранее спасибо!