2014-03-19 36 views
1

嗯,這是問題,我有一個用戶名列,我在models.py中定義它。 用戶可以參加一些課程(課程可能會在未來發生變化),用戶和課程之間的關係是1對多,這意味着用戶可以參加多個課程,並且可以由多個用戶開設課程。
我是新來的Django和數據庫設計,如何在ORM中用Django來表示它?如何使用django ORM進行動態綁定關係?

def user(models.Model): 
    name = models.CharField(max_length=30) 

class courses(models.Model): 
    course = models.CharField(max_length=100) 
+0

請顯示您的模型定義。 – alecxe

+2

聽起來像你需要多對多的關係。看看這裏的初學者https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/ – djsutho

+0

非常感謝!這對我非常有用。 – python

回答

2

繼@djsutho思想,定義一個many-to-many relationship

class user(models.Model): 
    name = models.CharField(max_length=30) 
    courses = models.ManyToManyField(courses) 

class courses(models.Model): 
    course = models.CharField(max_length=100) 

然後,例如,查詢每個用戶的課程是那麼容易,因爲:

courses.objects.filter(user__name='Bob') 

還要注意的是,由Django model naming convention,模型類名稱應以大寫字母開頭:user應爲Usercourses - Courses

另請注意,型號名稱不應爲複數形式 - 更好的名稱courses作爲Course。還更好地將course字段重命名爲name

所以,最後,這裏的圖片:

class User(models.Model): 
    name = models.CharField(max_length=30) 
    courses = models.ManyToManyField(Course) 

class Course(models.Model): 
    name = models.CharField(max_length=100) 

希望有所幫助。