【问题标题】:django.core.exceptions.FieldError: Cannot resolve keyword 'students' into field. Choices are: exam, id, student, student_id, subject, testdjango.core.exceptions.FieldError:无法将关键字“学生”解析为字段。选项有:exam、id、student、student_id、subject、test
【发布时间】:2020-05-24 04:56:33
【问题描述】:

我正在建立一个在线课程,学生可以在登录帐户时查看他们的结果,我不知道如何从数据库中查询结果以便能够生成老师发布的结果为每个学生。请问views.py怎么写?

我做了一些事情,但出现了错误。这是我的代码:

class Result(models.Model):
    student = models.ForeignKey(Students, on_delete=models.CASCADE)
    test = models.FloatField(null=True, blank=True)
    exam = models.FloatField(null=True, blank= True)
    subject = models.CharField(max_length=3, choices=SUBJECT, null=True)

    class Meta:
        ordering = ["-student"]

    def get_total(self):
        return self.exam + self.test

    def __str__(self):
        return self.student.first_name


class Students(models.Model):
    first_name = models.CharField(max_length=15, default='top')
    last_name = models.CharField(max_length=15, default='top')
    phone_number = models.IntegerField(default=0)
    email = models.EmailField()
    class_choice = models.CharField(max_length=3, choices=CLASS)
    last_accessed = models.DateTimeField(null=True, blank=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)

    class Meta:
        ordering = ["last_name"]

    def __str__(self):
        return self.last_name

    def get_absolute_url(self):
        return reverse('students-detail', kwargs={'pk': self.pk})

【问题讨论】:

    标签: django django-models django-views


    【解决方案1】:

    通常,我们喜欢this

    class Result(models.Model):
       student = models.ForeignKey(Students, related_name='results')
    
    class Student(models.Model):
       name = models.CharField(max_length=15, default='top')
    
    
    s1 = Student.objects.get(id=1)
    res = s1.results.all()
    
    

    【讨论】:

    • 这是我看到的 AttributeError: 'Result' object has no attribute 'all'
    • student = get_object_or_404(Students, id=id) results = Result.objects.filter(students=student),我该如何正确使用这个
    • 我在模型中添加了related_name。如果你没有,你的查询应该是s1.result_set.all()stackoverflow.com/questions/2642613/…
    • s = get_object_or_404(Student, id=id) res = s.results.all()res = Result.objects.filter(student=s)
    • 我已经能够将它放入上下文数据中,感谢您的时间
    猜你喜欢
    • 1970-01-01
    • 2020-11-08
    • 2023-03-03
    • 2012-09-13
    • 2021-11-04
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多