Мой проект - это инструмент поиска, который выполняет поиск по вопросам и / или ответам. Я хочу, чтобы он также мог фильтровать поиски, например, темы, клиенты. Каждый ответ сопоставляется с вопросом, темой и клиентом с помощью внешнего ключа.
Я могу выполнять поиск по вопросам и ответам, но когда я добавляю в разделы фильтра (раскрывающийся список), он возвращает 0 результатов.
models.py:
class Topic(models.Model):
Definition = models.TextField(default='Definition')
Name = models.TextField(default='Name')
class Meta:
ordering = ['Name']
def __str__(self):
return self.Name
class Question(models.Model):
Statement = models.TextField()
def __str__(self):
return self.Statement
class Response(models.Model):
Question = models.ForeignKey(Question, on_delete=models.CASCADE)
Topic = models.ForeignKey(Topic, default=13, on_delete=models.CASCADE)
Response = models.TextField()
Client = models.ForeignKey(ClientDetail, default=8, on_delete=models.CASCADE)
Planit_location = models.ForeignKey(Planit_location, default=1, on_delete=models.CASCADE)
Date_added = models.DateField(default=datetime.date.today)
def __str__(self):
return self.Response
documents.py:
class ResponseDocument20(DocType):
Question = fields.NestedField(properties={
'Statement': fields.TextField(),
'pk': fields.IntegerField(),
}, include_in_root=True)
class Meta:
model = Response
fields = [
'Response'
]
related_models = [Question]
def get_instances_from_related(self, related_instance):
if isinstance(related_instance, Question):
return related_instance.response_set.all()
views.py:
if q:#ES
cleanQ = stopwords.strip_stopwords(q)
if (queryR == "questions"):
if (queryT != "empty"):
responses = ResponseDocument20.search().filter(Q_ES("match", Question__Statement=cleanQ.lower())&Q_ES("match", Topic__Name=queryT)).extra(size=10000)
else:
responses = ResponseDocument20.search().query("match", Question__Statement=cleanQ.lower()).extra(size=10000) #ES
Я предположил, что все, что мне нужно было добавить, было Topic__Name = queryT, чтобы отфильтровать поиск по теме, и это дало бы мне результаты, которые соответствовали бы поисковому вводу И теме.