0

I'm using django-sphinxql for search requirements in my django project. I want to use two models in my app for search with some query. Models look as below

Class Model1(models.Model):
    name = models.CharField(max_length=50)
    model2 = models.ForeignKey(Model2, on_delete=models.CASCADE)

Class Model2(models.Model):
    caption = models.CharField(max_length=50)

I want to enable search for both name and caption fields above such that Model1 is returned for any matches, e.g. if query="abc" matches caption the response should be Model1, How would I achieve that I've created index for Model1 but don't know how to add caption from Model2 in it as well. My index for Model1 is as below

class Model1Index(indexes.Index):
    name = fields.Text(model_attr='name')
    class Meta:
        model = Model1
        settings.INDEXES['source_params'] = {'sql_field_string': ['name'],}

Quick help is appreciate.

Uday Swami
  • 395
  • 8
  • 22

1 Answers1

0

For foreign key fields in Sphinx we can use double underscores(__) to point to specific field for indexing. User model_attr for this

In above example

class Model1Index(indexes.Index): name = fields.Text(model_attr='name') caption = fields.Text(model_attr='model2__caption') class Meta: model = Model1 settings.INDEXES['source_params'] = {'sql_field_string': ['name'],}

can be defined.

Reference http://django-sphinxql.readthedocs.io/en/latest/indexes.html

Uday Swami
  • 395
  • 8
  • 22