【发布时间】:2020-06-17 02:43:19
【问题描述】:
所以,我正在开发一个基于 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
编辑:我第一次没有看到这个,但如果它与问题有关,并且有足够聪明的人知道上面字符串输出中的“False”是什么,我们将不胜感激。 第二条打印语句:
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
任何想法我做错了什么? 提前致谢!
【问题讨论】:
-
为了清楚起见 - 我检查了数据库并确认此脚本没有添加其他学生。代码突然停止运行。
-
这很奇怪。你在哪里运行你的 Django 应用程序?在某些环境(如 docker)中,由于缓冲,打印并不总是立即显示。
-
我仍在我自己的环境中本地运行该项目。但是由于我打算添加到数据库的对象没有正确添加,我想说它是否打印似乎不是真正的问题,而是我使用的临时调试费用;)跨度>
-
显然应该是“调试工具”>
标签: python-3.x django django-models django-views