【问题标题】:How do I pass an instance to a view?如何将实例传递给视图?
【发布时间】:2021-04-26 06:55:18
【问题描述】:

我无法理解系统正在返回的投诉。 这是系统的视图

 def AddMarksView(request):
        class_name = request.session.get('class_name')
        subject = Subject.objects.filter(name='Maths')
        exam = Exam.objects.filter(name='Endterm')
        students =  Students.objects.filter(school=request.user.school,klass__name = class_name,stream__name='South')
        if request.method == 'POST':
            for student in students:
                marks = int(request.POST['marks'])
                marks_object = Marks.objects.create(student=student,marks=marks,subject=subject,exam=exam)
        else:
            return render(request,'feed_marks.html')
        return redirect('search_m')

返回的错误是

Cannot assign "<QuerySet [<Exam: Endterm>]>": "Marks.exam" must be a "Exam" instance.

Marks odel 的模型是

class Marks(models.Model):
    exam = models.ForeignKey(Exam,on_delete=models.SET_NULL,null=True,blank=True)
    subject = models.ForeignKey(Subject,on_delete=models.SET_NULL,null=True,blank=True)
    student = models.ForeignKey(Students,on_delete=models.SET_NULL,null=True,blank=True)
    marks = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(100),] ,null=True,blank=True)

如何格式化视图以使其不返回错误?

【问题讨论】:

    标签: python-3.x django django-views


    【解决方案1】:

    尝试获取而不是过滤器,以便您的代码读取。

    def AddMarksView(request):
            class_name = request.session.get('class_name')
            subject = Subject.objects.get(name='Maths')
            exam = Exam.objects.get(name='Endterm')
            students =  Students.objects.filter(school=request.user.school,klass__name = class_name,stream__name='South')
            if request.method == 'POST':
                for student in students:
                    marks = int(request.POST['marks'])
                    marks_object = Marks.objects.create(student=student,marks=marks,subject=subject,exam=exam)
            else:
                return render(request,'feed_marks.html')
            return redirect('search_m')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 2020-12-05
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      相关资源
      最近更新 更多