2010-05-03 7 views
1

J'ai un site avec des utilisateurs qui peuvent prendre termes à l'Université:Django: ManyRelatedManager n'est pas appelable

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) 

Lorsque je tente d'ajouter à l'ensemble des termes que l'utilisateur prend, je reçois une erreur:

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() 

Cela pose un TypeError:

objet 'ManyRelatedManager' est pas appelable

Qu'est-ce que je fais mal?

Répondre

3

Essayez:

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

Lorsque vous écrivez takingTerms() vous appelez réellement takingTerms comme méthode, et puisque cet attribut est une instance de ManyRelatedManager et non une méthode appelable vous obtenez cette erreur.

Questions connexes