我的网站上有可以在大学学习的用户:
class Term(models.Model):
school = models.ForeignKey(School)
name = models.CharField(max_length=200)
isPrimaryTerm = models.BooleanField()
date = models.DateField()
class MyUser(models.Model):
user = models.ForeignKey(User, unique=True)
takingReqSets = models.ManyToManyField(RequirementSet, blank=True)
takingTerms = models.ManyToManyField(Term, blank=True)
takingCourses = models.ManyToManyField(Course, through=TakingCourse, blank=True)
school = models.ForeignKey(School)
当我尝试添加用户正在使用的术语集时,我收到错误:
def add_term(request):
curr_user = User.objects.get(id=request.GET['pk'])
term = RequirementSet.objects.filter(pk=request.GET['term_pk']).get()
curr_user.get_profile().takingTerms().add(term)
curr_user.get_profile().save()
这会引发TypeError
:
'ManyRelatedManager'对象不可调用
我做错了什么?
答案 0 :(得分:3)
尝试:
curr_user.get_profile().takingTerms.add(term)
当您编写takingTerms()
时,您实际上正在调用takingTerms
作为方法,并且由于该属性是ManyRelatedManager
的实例而不是可调用方法,因此您会收到该错误。