在我的模型中,我爲用戶(他們是學生或教師 - 我有一個連接到auth.User的UserProfile表),一個課程表以及一個名爲enrollment的表,用於記錄哪些學生已註冊哪些課程。我的models.py如下:在Django中,如何執行以下多對多查詢(使用直通表)?
class Course(models.Model):
name = models.CharField(max_length=40)
instructor = models.ForeignKey(UserProfile, related_name="Instructor")
students = models.ManyToManyField(UserProfile, through='Enrollment')
class UserProfile(models.Model):
user = models.OneToOneField(User, primary_key=True)
role = models.CharField(max_length=4, choices=ROLE_CHOICES) # 'stud' or 'inst'
class Enrollment(models.Model):
course = models.ForeignKey(Course)
student = models.ForeignKey(UserProfile)
對於給定的用戶,我想找到的所有課程小號,他在就讀/我怎樣才能做到這一點?
此外,我在哪裏可以找到如何在Django中執行查詢的詳細說明,最好有大量緩慢增加複雜性的示例?
我試過這個,但得到以下錯誤:'無法解析關鍵字'user_username'到字段中。選擇是:教師,課程,招生,筆記,角色,studentanswer,用戶這些選項中的一些特定於我的模型中的細節,我忽略了上述問題。 – Deonomo
看起來像@Alasdair修復了用戶和用戶名之間缺少的下劃線。謝謝。 – sgallen
非常感謝。顯然,我需要對這個主題的文檔進行深入的研究。 – Deonomo