如何使用django ORM进行动态绑定关系?

时间:2014-03-19 03:23:59

标签: django orm

嗯,这就是问题,我有一个用户名列,我在models.py中定义了它。 并且用户可以参加一些课程(课程可能在将来改变),用户和课程之间的关系是1对多,这意味着用户可以参加多个课程,并且可以由多个用户进行课程。
我是django和DB设计的新手,如何用DjM在Django中表示这个?

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

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

1 个答案:

答案 0 :(得分: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

另请注意,型号名称不应为复数形式 - 更好的名称coursesCourse。最好将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)

希望有所帮助。