First you should add a related name to your foreign key so you can call it later.
class Model2(models.Model):
field1_model2 = models.ForeignKey(Model1, related_name='something')
field2_model2 = models.CharField()
Then index Model1. For field2_model2, prepare the data by getting the info as seen below.
class Model1Index(indexes.SearchIndex):
text = indexes.CharField(document=True, use_template=True)
field1_model1 = indexes.CharField(model_attr='field1_model1', faceted=True)
field2_model2 = indexes.Charfield()
def prepare_field2_model2(self, obj):
return obj.something.field2_model2
site.register(Model1, Model1Index)
In your search.html you would display the data with {{ result.field1_model1 }}
and {{ result.field2_model2 }}
Don't forget to add the fields to your .txt file, probably called model1_text.txt in templates -> search -> indexes -> app_name. (or something similar)
{{ object.field1_model1 }}
{{ object.field2_model2 }}
And then it should just be a matter of updating the schema and rebuilding your index and you should be good to go.