[英]Django: How to get all objects related to a model by another model?
我有 3 個模型: User
、 Course
和Homework
。 每門課程都有一些作業和一些用戶(學生)。 我怎樣才能擁有用戶所參加的所有課程的所有作業? 這些是模型:
class User(AbstractUser):
# ...
class Course(models.Model):
students = models.ManyToManyField(User, blank=True, related_name='student_courses')
# ...
class Homework(models.Model):
course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name='course_homeworks')
# ...
嘗試:
Homework.objects.filter(course__students=user)
如果你有用戶對象,你可以這樣做
Homework.objects.filter(course__students=user)
如果你有用戶 ID,你可以這樣做
Homework.objects.filter(course__student_courses__id=user_id)
我在上面的代碼中使用了student_courses
因為你設置了related_name
如果您有多個用戶或用戶 ID,您也可以這樣做
Homework.objects.filter(course__student_courses__in=user_ids) # user_ids = [1,3,4]
因此,您可以使用任何用戶字段進行過濾,只需將course__student_courses__id
替換為course__student_courses__field_name
最后一件事你也可以讓我們startswith, exact, iexact, ...
就像course__student_courses__field_name__startswith
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.