Если вы используете управляющую команду Haystack build_solr_schema
для создания schema.xml, обратите внимание, что она автоматически включает в себя различные динамические поля для популярных типов полей. Например, проверьте шаблон схемы для Haystack v2.1 . (Похоже, он был там с Haystack v1.)
Это позволяет вам создавать динамически именованные поля в методе подготовки вашего поискового индекса. Например, если вы индексировали заметки, которые могли бы содержать строку идентификатора для вашей постоянно меняющейся группы партнеров, вы могли бы сделать это:
def prepare(self, obj):
self.prepared_data = super(NoteIndex, self).prepare(obj)
for (partner_name, partner_id) in get_partners():
self.prepared_data['%s_s' % partner_name] = partner_id
return self.prepared_data
Ключевым моментом здесь является то, что имя поля заканчивается на "_s", что в соответствии со схемой является динамическим именем для строковых типов.
К сожалению, эти динамические партнерские поля не определены явно в верхней части вашего класса SearchIndex. Вы можете упомянуть об этом в комментарии.