如何在Django中编写多模型查询
如何为登录(如何在Django中编写多模型查询,django,models,Django,Models,如何为登录(student=self.request.user.id)以查看作业标题(属于自己的)的学生编写查询 (取水口) 学生分为一个班,每个班有多个模块 class IntakeDetails(models.Model): intake = models.ForeignKey(intake, on_delete=models.CASCADE) lecturer = models.ForeignKey(Lecturer, on_delete=models.CASCAD
student=self.request.user.id
)以查看作业标题(属于自己的)的学生编写查询
(取水口)
学生分为一个班,每个班有多个模块
class IntakeDetails(models.Model):
intake = models.ForeignKey(intake, on_delete=models.CASCADE)
lecturer = models.ForeignKey(Lecturer, on_delete=models.CASCADE)
module= models.ForeignKey(Module, on_delete=models.CASCADE)
class AssignAssignment(models.Model):
title=models.CharField(max_length=30)
duedate=models.DateField()
intakedetails=models.ForeignKey(IntakeDetails,on_delete=models.CASCADE,null=True)
我尝试了这个,但是如果有多个IntakDetails
,它会弹出一个错误
@login_required
class ModelIndexView(ListView):
template_name= 'accounts/students/students.html'
context_object_name= 'students'
def get_queryset(self):
student = self.request.user.id
student_det = Student.objects.get(user_id=student)
assignment=IntakeDetails.objects.get(intake_id=student_det.intakecode)
queryset=AssignAssignment.objects.filter(intakedetails_id=assignment.id)
return queryset
因为当您使用
objects.get
时,应该只有一行与您的查询匹配。无行或多行--ObjectDoesNotExist
和multipleobjects分别返回
您可以使用此查询获得所需的结果:
AssignAssignment.objects.filter(intakedetails__intake_id=Student.objects.get(user_id=student).intakecode)
AssignAssignment.objects.filter(intakedetails__intake_id=Student.objects.get(user_id=student).intakecode)