Как получить id из функции в Django
hollo dears, I'm working on a project I have a problem with my code below, I can't get the subject_id from URL and save it in the Grade model, it gets None value.error is: Subject matching query does not exist.
Grade model:
class Grade(models.Model):
id=models.AutoField(primary_key=True)
student= models.ForeignKey('Student', null=True,on_delete=models.PROTECT)
classwork= models.ForeignKey('ClassWork',on_delete=models.PROTECT)
section= models.ForeignKey('Section', null=True,on_delete=models.PROTECT)
subject= models.ForeignKey('Subject',null=True, on_delete=models.PROTECT)
grade = models.DecimalField(null=True, decimal_places=2, max_digits=2, default=0)
description = models.TextField(max_length=500, null=True)
assignment1=models.DecimalField(null=True, decimal_places=2, max_digits=2, default=0)
assignment2=models.DecimalField(null=True, decimal_places=2, max_digits=2, default=0)
assignment3=models.DecimalField(null=True, decimal_places=2, max_digits=2, default=0)
Views.py
def newgrade(request, subject_id):
# subject=Subject.objects.get(id=subject_id)
classwork = ClassWork.objects.filter(teacher_id=request.user.id)
student=Student.objects.filter(classwork__subject__id=subject_id)
context = {
"classwork": classwork,
"student":student,
"subject":subject,
}
return render(request, 'myapp/teacher_template/newgrade.html', context)
def newgrade_save(request):
if request.method != "POST":
messages.error(request, "Invalid Method")
return redirect('newgrade')
else:
subject_id = request.POST.get('subject')
assignment1 = request.POST.get('assignment1')
assignment2 = request.POST.get('assignment2')
assignment3 = request.POST.get('assignment3')
final = request.POST.get('final')
sutudent_id= request.POST['student_select']
# ошибка здесь, я хочу получить значение subject_id из URL, и сохранить его Grade model subject_obj = Subject.objects.get(id=subject_id)
# try:
# Check if Students Result Already Exists or not
check_exist = Grade.objects.filter(subject_id=subject_obj, student_id=student_obj).exists()
if check_exist:
grades = Grade.objects.get(subject_id=subject_obj, student_id=student_obj)
grades.assignment1 = assignment1
grades.assignment2 = assignment2
grades.assignment3 = assignment3
grades.final = final
grades.grade= assignment1 + assignment2 + assignment3 + final
grades.save()
messages.success(request, "Result Updated Successfully!")
return redirect('newgrade')
else:
result = Grade(student_id=student_obj, subject_id=subject_obj, assignment1=assignment1, assignment2=assignment2, assignment3=assignment3,final=final, grade=grade)
result.save()
messages.success(request, "Result Added Successfully!")
return redirect('newgrade')
# except:
messages.error(request, "Failed to Add Result!")
return redirect('newgrade')
[1]: https://i.stack.imgur.com/zJuBJ.png