在学习Django的同时,我正在创建一个示例应用程序,其中我有两种类型的用户:学生和教育者。教育者可以创建学习部分,学生可以选择他们想参与的内容(只是一个布尔字段“是”或“否”)。我想为每项研究创建一个“查看参与者”页面,以便教育者可以看到哪些学生参与了每个部分。要对每个学习部分执行此操作,我需要查询所有标记为“是”以参与该学习部分的学生用户。我对如何使用Django的QuerySet方法来实现这一点有点纠结。你知道吗
这是我的型号.py你知道吗
class User(AbstractUser):
is_student = models.BooleanField(default=False)
is_educator = models.BooleanField(default=False)
class Interest(models.Model):
...
class Study(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='studies')
name = models.CharField(max_length=255)
interest = models.ForeignKey(Interest, on_delete=models.CASCADE, related_name='studies')
def __str__(self):
return self.name
class Detail(models.Model):
...
class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
interests = models.ManyToManyField(Interest, related_name='interested_students')
def get_details(self, study):
details = study.details.all().order_by('start_date')
return details
def __str__(self):
return self.user.username
class StudentAnswer(models.Model):
student = models.ForeignKey(Student, on_delete=models.CASCADE, related_name='study_answers')
study = models.ForeignKey(Study, on_delete=models.CASCADE, related_name='study_participate', null=True)
participate = models.BooleanField('Correct answer', default=False)
我想写一封信视图.py功能如下:
@method_decorator([login_required, educator_required], name='dispatch')
class StudyResultsView(DetailView):
model = Study
context_object_name = 'study'
template_name = 'classroom/educators/study_results.html'
def get_context_data(self, **kwargs):
study = self.get_object()
participants = study.????
total_participants = participants.count()
extra_context = {
'participants': participants,
'total_participants': total_participants,
}
kwargs.update(extra_context)
return super().get_context_data(**kwargs)
def get_queryset(self):
return self.request.user.studies.all()
但是我不知道在participants = study.????
处应该有什么正确的查询,以便为该研究选择所有标记为participate=True的用户。你知道吗
这肯定管用。你知道吗
相关问题 更多 >
编程相关推荐