外鍵字段必須屬於search.indexes.py文件中index.SearchIndex,indexes.Indexable子類的屬性。
一個例子是:
class NoteTaker(models.Model):
name = models.CharField()
age = models.IntegerField()
class Note(models.Model):
notetaker = models.ForeignKey(NoteTaker, null=True)
what_was_written = models.TextField()
然後在search_indexes.py:
class NoteSearchIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
age = indexes.IntegerField(model_attr='notetaker__age')
的docs explain that here。
在某些情況下,如反向FK,您必須使用def prepare_FOO
其中FOO是被索引字段的名稱。所以,如果你索引NoteTaker而不是Note,你可以做
def prepare_the_notes_text(self, obj):
if hasattr(obj, 'note'):
return obj.note.what_was_written
else:
return None