为什么django-haystack会多次运行对象准备?

问题描述

我的SearchIndex中有这个东西:

class UserIndex(SearchIndex,Indexable):
    text = CharField(document=True,use_template=True)
    likes = IntegerField()

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

    def get_model(self):
        return User

    def prepare_likes(self,obj):
        # Logging here just because it's the first "prepare" function.
        log.debug("Indexing %s: %d" % (obj.__class__.__name__,obj.pk))
        return obj.get_all_likes()

我的数据库中有一个对象。当我运行update_index时,log.debug对于带有pk 1的对象将被打印3次。

我在做什么错了?

解决方法

问题很简单,prepare_likes方法又被其他prepare_方法调用,导致了多个日志语句,使我认为整个索引不止发生一次。