我正在尝试建立一个网站,用户可以添加他们正在学习的课程。我想知道我应该如何添加 ManyToMany 关系。这样我们就可以根据课程代码或讲师或任何字段获取课程中的所有用户。我们还可以获取用户注册的课程。目前,我的数据库结构是:
class Course(models.Model):
course_code = models.CharField(max_length=20)
course_university = models.CharField(max_length=100)
course_instructor = models.CharField(max_length=100)
course_year = models.IntegerField(('year'), validators=[MinValueValidator(1984), max_value_current_year])
def __str__(self):
return self.course_code
Run Code Online (Sandbox Code Playgroud)
和我的用户模型:
class Profile(AbstractUser):
bio = models.TextField()
image = models.ImageField(default='defaults/user/default_u_i.png',
courses = models.ManyToManyField('home.Course',related_name='courses')
def __str__(self):
return self.username
Run Code Online (Sandbox Code Playgroud)
我想知道多对多关系应该在用户模型还是课程模型中?或者它会有所作为吗?
编辑:为了将课程添加到发布对象,现在我正在使用此视图,但它似乎不起作用:
@login_required
def course_add(request):
if request.method == "POST":
form = CourseForm(request.POST or none)
if form.is_valid():
course = form.save()
request.user.add(course)
else:
form = CourseForm
context = {
'form':form
}
return render(request,'home/courses/course_add.html', context)
Run Code Online (Sandbox Code Playgroud)