2014-10-28 116 views
0

我想使用草垛,但我所有的模型都有「body」作爲它們的文本字段名稱。但所有型號都是一樣的。如何更改文檔的名稱= Django中Haystack的True字段?

現在我得到這個錯誤:

All 'SearchIndex' classes must use the same 'text' fieldname for the 'document=True' field. Offending index is '<qna.search_indexes.QuestionIndex object at 0x2435328>'. 

這就是索引文件:

進口日期時間 從草垛進口指數 從qna.models導入問題

class QuestionIndex(indexes.SearchIndex, indexes.Indexable): 
    subject = indexes.CharField(document=False, use_template=False) 
    body = indexes.CharField(document=True, use_template=True, model_attr='user') 
    pub_date = indexes.DateTimeField(model_attr='pub_date') 

    def get_model(self): 
     return Question 

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

它是隻有一個!什麼是冒犯?據我所知,字段名稱不必是「文本」,它只需要在每個字段上都是相同的。但它是唯一的領域!我必須更改一些配置嗎?這可能是什麼原因???

回答

1

我在乾草堆裏看到了你的錯誤。它看起來像有此字段的名稱設置(https://github.com/toastdriven/django-haystack/blob/master/haystack/utils/loading.py#L154):

self.document_field = getattr(settings, 'HAYSTACK_DOCUMENT_FIELD', 'text') 

在該文件(https://github.com/toastdriven/django-haystack/blob/master/haystack/utils/loading.py#L222)後來它檢查,以確保您的索引名的比賽,並與你看到如果錯誤炸燬他們不同意:

if field_object.index_fieldname != self.document_field: 
    raise SearchFieldError("All 'SearchIndex' classes must use the same '%s' fieldname for the 'document=True' field. Offending index is '%s'." % (self.document_field, index)) 

如果設置HAYSTACK_DOCUMENT_FIELD爲「體」,在你的設置,它看起來像應該這樣做。

相關問題