2016-06-06 2 views
0

elasticsearch 및 django와 함께 django-haystack 2.4.1 버전을 사용하고 있습니다. 1.8.11 제거 매개 변수로 색인을 업데이트하는 동안 문제가 있습니다. . 내 모델의 일부가 삭제 얻을 후 나는django haystack이 오래된 레코드를 제거 할 수 없습니다. - AttributeError : Nonetype 객체에 '_meta'속성이 없습니다.

./manage.py update_index --remove 

을 실행하면 나는 오류를 AttributeError를 얻을 경우 Nonetype 객체는 어떤 속성 '_meta'

내가 추적을 확인하고 오류가 있음을 발견이 없습니다 default_get_identifier 속성 오류를 반환 get_model_ct

default_get_identifier 
    return u"%s.%s" % (get_model_ct(obj_or_string), 

여기에 모델이 이미 삭제로 방법에서 오는.

는 다음 나는 HAYSTACK_IDENTIFIER_METHOD 매개 변수에 대해 알게 그래서 이미 삭제되어 같은 모델을 obj_or_string 로 남아

def getHaystackIdentifier(obj_or_string): 
    return (str(obj_or_string)+"."+str(obj_or_string._get_pk_val())) 

그러나 근본적인 문제 아래에 나와있는 내 자신의 방법을 정의하는 생각 데이터베이스,

부실 레코드의 식별자를 가져 와서 인덱스에서 삭제할 수 있습니까?

haystack은 해당 모델이 해당 레코드를 찾지 못하면 자동으로 레코드를 삭제하지 않아야합니까? 여기에 뭔가 빠졌는지 확실하지 않습니다

답변

0

이 문제를 해결할 수있었습니다. 문제는 내 필드 이름 (id)이 기본 haystack 필드와 충돌하여 장고 설정 파일에 정의 된 HAYSTACK_ID_FIELD입니다. http://django-haystack.readthedocs.io/en/v2.4.1/settings.html#haystack-id-field

내 필드 이름을 다른 것으로 변경하고이 설정을 제거하면 모든 것이 정상적으로 작동하는 것으로 보입니다. 필드 이름을 변경했지만이 항목을 설정 파일에서 제거하지 않더라도 여전히 오류가 있음을 유의하십시오.

github 문제에 대한이 오류의 전체 추적을 확인하십시오. https://github.com/django-haystack/django-haystack/issues/1380

관련 문제