django haystack unable to remove stale records - AttributeError: Nonetype object has no attribute '_meta'
django haystack unable to remove stale records - AttributeError: Nonetype object has no attribute '_meta'
我正在使用带有 elasticsearch 和 django 1.8.11 的 django-haystack 2.4.1 版本
我在使用删除参数更新索引时遇到问题。如果我的一些模型被删除然后如果我 运行
./manage.py update_index --remove
我收到错误 AttributeError: Nonetype object has no attribute '_meta'
我检查了跟踪,发现错误来自 default_get_identifier 方法
default_get_identifier
return u"%s.%s" % (get_model_ct(obj_or_string),
这里由于模型已经删除,get_model_ct returns属性错误
然后我发现了HAYSTACK_IDENTIFIER_METHOD这个参数,所以我想到了定义我自己的方法,下面会提到
def getHaystackIdentifier(obj_or_string):
return (str(obj_or_string)+"."+str(obj_or_string._get_pk_val()))
但基本问题仍然存在,因为 obj_or_string 模型已从数据库中删除,
如何获取陈旧记录的标识符并将其从索引中删除?
如果没有找到对应的模型,haystack不应该自动删除记录吗?我不确定我是否遗漏了什么
我能够解决这个问题。问题是 HAYSTACK_ID_FIELD 在 django 设置文件中定义,因为我的字段名称 (id) 与默认的 haystack 字段冲突。 http://django-haystack.readthedocs.io/en/v2.4.1/settings.html#haystack-id-field
我将我的字段名称更改为其他名称并删除了此设置,一切似乎都运行良好。请注意,即使我更改了我的字段名称但不从设置文件中删除此条目,它仍然会给我错误。
在此处检查 github 问题上此错误的完整跟踪
https://github.com/django-haystack/django-haystack/issues/1380
我正在使用带有 elasticsearch 和 django 1.8.11 的 django-haystack 2.4.1 版本 我在使用删除参数更新索引时遇到问题。如果我的一些模型被删除然后如果我 运行
./manage.py update_index --remove
我收到错误 AttributeError: Nonetype object has no attribute '_meta'
我检查了跟踪,发现错误来自 default_get_identifier 方法
default_get_identifier
return u"%s.%s" % (get_model_ct(obj_or_string),
这里由于模型已经删除,get_model_ct returns属性错误
然后我发现了HAYSTACK_IDENTIFIER_METHOD这个参数,所以我想到了定义我自己的方法,下面会提到
def getHaystackIdentifier(obj_or_string):
return (str(obj_or_string)+"."+str(obj_or_string._get_pk_val()))
但基本问题仍然存在,因为 obj_or_string 模型已从数据库中删除,
如何获取陈旧记录的标识符并将其从索引中删除?
如果没有找到对应的模型,haystack不应该自动删除记录吗?我不确定我是否遗漏了什么
我能够解决这个问题。问题是 HAYSTACK_ID_FIELD 在 django 设置文件中定义,因为我的字段名称 (id) 与默认的 haystack 字段冲突。 http://django-haystack.readthedocs.io/en/v2.4.1/settings.html#haystack-id-field
我将我的字段名称更改为其他名称并删除了此设置,一切似乎都运行良好。请注意,即使我更改了我的字段名称但不从设置文件中删除此条目,它仍然会给我错误。
在此处检查 github 问题上此错误的完整跟踪 https://github.com/django-haystack/django-haystack/issues/1380