2013-04-18 4 views
2

django-haystack 2.0.0과 xapian-haystack 2.0.0을 사용하여 docs에서 말한대로 모든 코드를 1.1.5에서 마이그레이션했습니다. 이제 내 search_indexes.py은 다음과 같습니다Django-haystack이 색인을 업데이트하지 않음

from haystack import indexes 
from app.models import Post 

class PostIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.CharField(document=True, use_template=True) 

    def get_model(self): 
     return Post 

    def index_queryset(self, using=None): 
     """Used when the entire index for model is updated.""" 
     return self.get_model().objects.filter(visible=True) 

하지만 rebuild_index를 갈 때, 그것은 말한다 : 당신은 당신이 계속 하시겠습니까

있습니까? [y/N] y

그렇게 말했기 때문에 색인에서 모든 문서를 제거하십시오. 모든 문서가 제거되었습니다. 상세으로

: 건초 더미 색인이 모델을하지 않는 이유

Skipping '<class 'django.contrib.auth.models.Permission'>' - no index. 
Skipping '<class 'django.contrib.auth.models.Group'>' - no index. 
... 
Skipping '<class 'app.models.Post'>' - no index. 

그래서, 나도 몰라.

답변

1
당신은 "텍스트"추가 아래 때문에 실제로 색인에 필드를 추가해야

:

post1 = indexes.CharField(model_attr='postfield1', null=True) 

을 다음 post_text.txt 인덱스 파일 템플릿 :

지금
{{object.post1}} 

작동한다 . 당신은 당신의

search_indexes.py

파일에 검색 할 필드하는

+0

고맙습니다. – amureki

1

을 추가하지 않았습니다. 당신은 같이해야 할 :

class PostIndex(indexes.SearchIndex, indexes.Indexable): 
text = indexes.CharField(document=True, use_template=True) 
data = indexes.CharField(model_attr='data', blank=True, null=True) 

def get_model(self): 
    return Post 

def index_queryset(self, using=None): 
    """Used when the entire index for model is updated.""" 
    return self.get_model().objects.filter(visible=True) 

다음 templates/search/indexes/'app_name'/post_text.txt 같은 디렉토리 구조를 만들 수 있습니다. 이제 명령 ./manage.py rebuild_index을 실행하십시오.

관련 문제