У меня есть простое приложение на форуме:
# models
class Topic(models.Model):
title = models.CharField(max_length=255)
class Message(models.Model):
text = models.TextField()
topic = models.ForeignKey(Topic, related_name='messages')
# views
class SearchView(ListView):
...
def get_queryset(self):
search_vector = SearchVector('messages__text')
search_query = SearchQuery(self.request.GET.get('query'))
topics = Topic.objects.annotate(
rank=SearchRank(search_vector, search_query)
).filter(rank__gte=0.0).order_by('-rank')
return topics
Я хочу иметь полнотекстовый поиск на моем форуме. Все работает, но в результатах запроса к теме я получил дублированные объекты.
<QuerySet [<Topic: 1>, <Topic 1>, <Topic 2>, <Topic 1>, ...]>
Я думаю, что это происходит из-за нескольких сообщений в одной теме, которые дают мне разные значения ранга.
Как я могу удалитьповторяющиеся темы, но сохраняйте порядок рангов?