Django: ManyRelatedManager не может быть вызван - PullRequest
1 голос
/ 03 мая 2010

У меня есть сайт с пользователями, которые могут брать термины в университете:

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 не вызывается

Что я делаю не так?

1 Ответ

3 голосов
/ 03 мая 2010

Попробуйте:

curr_user.get_profile().takingTerms.add(term)

Когда вы пишете takingTerms(), вы фактически вызываете takingTerms как метод, и поскольку этот атрибут является экземпляром ManyRelatedManager, а не вызываемым методом, вы получаете эту ошибку.

...