haystack - how you display data from multiple models with ForeignKeys?

后端 未结 1 837
别那么骄傲
别那么骄傲 2020-12-31 20:16

I have two models:

models.py

class model1 (models.Model):
   field1_model1 = models.CharField()
   filed2_model1 = models.CharField()

class model2 (         


        
相关标签:
1条回答
  • 2020-12-31 20:40

    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.

    0 讨论(0)
提交回复
热议问题