Я использую Haystack с бэкэндом Elasticsearch для поиска связанных моделей. Учитывая модели simpleisti c:
class Album(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
class Photo(models.Model):
album = models.ForeignKey("app.Model", on_delete=models.CASCADE)
name = models.CharField(max_length=100)
description = models.TextField()
Учитывая поисковый запрос 'ab c', я хотел бы, чтобы результаты поиска соответствовали 'ab c' в любом названии или описании альбома, или любую фотографию, но иметь возможность представить результаты по альбому с совпадающими фотографиями, вложенными в альбом.
Другими словами, альбом считается совпадением, если он имеет совпадение в его описании или названиях, или если он содержит фотографии, которые совпадение в их имени или описании.
Результаты должны выглядеть так:
Album 1
No photo
Album 2
Photo 1
Photo 2
...
Я пробовал использовать разные индексы для каждой модели, но связь теряется в процессе, или используйте только один индекс и проиндексируйте все фотографии в поле MultiValuefield, но я не уверен, как вернуть только те фотографии, которые совпадают в SearchQuesyset, объединяющем обе модели. Я видел, как можно использовать вложенные запросы в Elacticsearch, как в этом gist , но я не уверен, что это необходимо, так как мне нужно увеличить только альбом, а не фотографии. Есть идеи?