【发布时间】:2021-07-08 08:53:53
【问题描述】:
我需要帮助来解决这个奇怪的错误。我有一个应用程序,老师可以添加作业,然后学生可以提交作业,然后老师可以对其进行评分。目前,除了对结果进行评分之外,其他所有功能都运行良好。
注意:“STUDENT 1”是要对其作业评分的用户
我知道我在外键字段中使用的是字符串而不是整数,但我怎样才能修复它。有没有办法将字符串转换为整数或如何。我尝试了这种方法,但它似乎不起作用。我尝试了“Student_ID__student_ID”和 course__Course_Name,它们只是要进入模型并使用字符串类型的字段,然后我认为它应该匹配,但我得到了这个错误,而不是“Grade_Student()得到了一个意外的关键字参数'Student_ID__student_ID'”然后我将“Grade_Student(...)”更改为 Grade_Student.objects.update_or_create(...) 然后在 /en/grading_submit 处收到这个新错误“IntegrityError” NOT NULL 约束失败:schoolapp_grade_student.Student_ID_id”,然后我尝试通过将 Grade_Student_data.save() 更改为 Grade_Student_data.save(commit=False) 来修复它,但它仍然是同样的错误。是否有更多信息需要帮助我。
错误日志
Traceback (most recent call last):
File "C:\Users\Habib\Documents\django\FIVERR\Ayyub_SMS\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\Habib\Documents\django\FIVERR\Ayyub_SMS\venv\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Habib\Documents\django\FIVERR\Ayyub_SMS\sms\schoolapp\views.py", line 1948, in grading_submit
Assignment_name=grade_field_assignment_name, Grade=grade_field, Out_Of_Grade=out_grade_filed)
File "C:\Users\Habib\Documents\django\FIVERR\Ayyub_SMS\venv\lib\site-packages\django\db\models\base.py", line 483, in __init__
_setattr(self, field.name, rel_obj)
File "C:\Users\Habib\Documents\django\FIVERR\Ayyub_SMS\venv\lib\site-packages\django\db\models\fields\related_descriptors.py", line 220, in __set__
self.field.remote_field.model._meta.object_name,
Exception Type: ValueError at /en/grading_submit
Exception Value: Cannot assign "'STUDENT 1'": "Grade_Student.Student_ID" must be a "add_students_by_manager" instance.
models.py
class add_courses(models.Model):
Course_Name = models.CharField(max_length=200, blank=True)
Manager_Name = models.ForeignKey(Manager_login_information, on_delete=models.CASCADE, blank=True)
student = models.ManyToManyField(add_students_by_manager, blank=True)
# Start Habib
start_date = models.DateField()
end_date = models.DateField()
# End Habib
def __str__(self):
return self.Course_Name
class add_students_by_manager(models.Model):
manager_ID = models.ForeignKey(Manager_login_information, on_delete=models.CASCADE)
student_ID = models.CharField(max_length=200)
student_name = models.CharField(max_length=200)
def __str__(self):
return self.student_name
class Grade_Student(models.Model):
Student_ID = models.ForeignKey(add_students_by_manager, on_delete=models.CASCADE)
course = models.ForeignKey(add_courses, on_delete=models.CASCADE)
Assignment_name = models.CharField(max_length=200)
Grade = models.IntegerField()
Out_Of_Grade = models.IntegerField()
def __str__(self):
return str(self.Student_ID) + " scored " + str(self.Grade) + " out of " + str(self.Out_Of_Grade) + " in " + str(self.course)
views.py
def grading_submit(request):
if request.method=="POST":
grade_field_stu_id = request.POST.get('grade_field_stu_id')
grade_field_course_name = request.POST.get('grade_field_course_name')
grade_field_assignment_name = request.POST.get('grade_field_assignment_name')
grade_field = request.POST.get('grade_field')
out_grade_filed = request.POST.get('out_grade_filed')
print(grade_field, grade_field_stu_id, grade_field_course_name, grade_field_assignment_name, out_grade_filed)
Grade_Student_data= Grade_Student(Student_ID=grade_field_stu_id, course=grade_field_course_name,
Assignment_name=grade_field_assignment_name, Grade=grade_field, Out_Of_Grade=out_grade_filed)
Grade_Student_data.save()
messages.success(request, _("You Successfully Grade a student!"))
return redirect('assignment_page')
else:
return redirect('/')
grading_page.html
<form class="container pt-5" action="{% url 'grading_submit' %}" method="POST">{% csrf_token %}
<div class="mb-3">
<label for="exampleInputEmail1" class="form-label">Grade</label>
<input name="grade_field" type="text" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
<input name="grade_field_stu_id" value="{{stu_id_grade}}" type="hidden" class="form-control">
<input name="grade_field_course_name" value="{{stu_course_grade}}" type="hidden" class="form-control">
<input name="grade_field_assignment_name" value="{{stu_ass_name_grade}}" type="hidden" class="form-control">
<input name="out_grade_filed" value="{{stu_total_grade}}" type="hidden" class="form-control">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
【问题讨论】:
标签: python django django-models django-views django-templates