簡體   English   中英

Django:如何通過另一個模型獲取與模型相關的所有對象?

[英]Django: How to get all objects related to a model by another model?

我有 3 個模型: UserCourseHomework 每門課程都有一些作業和一些用戶(學生)。 我怎樣才能擁有用戶所參加的所有課程的所有作業? 這些是模型:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM