嗯,这就是问题,我有一个用户名列,我在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)
答案 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
应为User
,courses
- 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)
希望有所帮助。