2014-03-06 129 views
0

我得到了他奇怪的错误。尽管我已经把all()呼叫的多对多场 我仍然得到这个恼人的错误..haystack django TypeError:'ManyRelatedManager'对象不可迭代

class GrantIndex(): 
    pilist = indexes.MultiValueField(model_attr='pilist',faceted=False) #then we do iteration in template. if we set this as charField, we do prepare_pilist here! 
    copilist = indexes.MultiValueField(model_attr='copilist',faceted=False) 
    # content_auto=indexes.EdgeNgramField(model_attr='title') 

    def get_updated_field(self): 
     return "lastupdated" 

    def get_model(self): 
     return Grant 

    def index_queryset(self,using=None): 
     return self.get_model().objects.all() 

    def prepare_pi(self, obj):  
     return "%s %s %s" %(obj.pi.first_name,obj.pi.last_name,obj.pi.professor.university,obj.pi.professor.academic.interests,obj.pi.professor.academic.publications) 

    def prepare_pilist(self, obj): 
     return [(p.firstname,p.lastname,p.email,p.university,p.academic.interests,p.academic.publications) for p in obj.pilist.all()]  


    def prepare_copilist(self, obj): 
     return [(p.firstname,p.lastname,p.email,p.university,p.academic.interests,p.academic.publications) for p in obj.copilist.all()] 
+1

欢迎来到Stack Overflow!请务必阅读选择标签时出现的有用说明。 – Charles

回答

1

您提供“model_attr”参数,防止了“prepare_”程序被使用,并在索引时间它我会直接去'pilist'和'copilist'。
尝试删除它们,以便将代码用于索引这些字段。