django - Django如何过滤嵌套关系
问题描述
我有这两个模型
class Assignment(models.Model):
subject_info = models.ForeignKey(SubjectInfo, on_delete=models.CASCADE, related_name='assignments')
release_results = models.BooleanField(default=False)
total_marks = models.IntegerField(default=0)
deadline = models.DateTimeField()
class StudentAssignment(models.Model):
assignment = models.ForeignKey(Assignment, on_delete=models.CASCADE, related_name='submissions')
student = models.ForeignKey(Student, on_delete=models.CASCADE)
submitted = models.BooleanField(default=False)
scored = models.BooleanField(default=False)
status = models.CharField(choices=STATUS, max_length=50, null=True, blank=True)
score = models.IntegerField(null=True, blank=True)
在我看来,我正在尝试完成以下所有任务:
1)没有与用户相关的学生作业
2)有一个与用户相关的studentassignment,但提交的值为False
我是这样做的:
def get_queryset(self, *args, **kwargs):
queryset = Assignment.objects.filter(
subject_info__teacher__school=self.request.user.student.school,
subject_info__related_class=self.request.user.student.current_class,
subject_info__subject__in=self.request.user.student.subjects,
deadline__gte=datetime.now(),
).exclude(
submissions__isnull=True,
submissions__student=self.request.user.student,
submissions__submitted=False,
)
return queryset
但它没有返回正确的值。
请问我该如何解决这个问题?
解决方案
你可以尝试这样使用Q
:
from django.db.models import Q
queryset = Assignment.objects.filter(
Q(submissions__isnull=True) | Q(submissions__student__user=request.user, submissions__submitted=False)
)
推荐阅读
- php - 从具有关系的数据库中检索数据
- python - Python Selenium `move_by_offset` 不起作用
- kotlin - Kotlin 等待不暂停?
- python - 我收到以下错误:ModuleNotFoundError: No module named
- python - keras的逻辑回归分类器
- python - windows脚本重新排序和替换xml文件中的文本?
- animation - 从 fbx 模型构建骨架
- python - python中的p值调整Mann-Whitney U检验
- java - 代码神秘地运行两次后TextsView null
- sql - 获取分配有多个连接条件的重复值