몇 가지 예에서속성을 사용한 장고 - 스핑크스 결과 필터링?
queryset = MyModel.search.query('query')
results1 = queryset.order_by('@weight', '@id', 'my_attribute')
results2 = queryset.filter(my_attribute=5)
results3 = queryset.filter(my_other_attribute=[5, 3,4])
results4 = queryset.exclude(my_attribute=5)[0:10]
, 나는 장고 - 스핑크스 documentation를 통과되었고, 그것은 당신이 이 속성 사용하여 검색 결과를 필터링 할 수 있습니다 것 같습니다, 이러한 특성은 스핑크스에서 지정한 뭔가 것 같다 표의 실제 열 값이 아닌 구성 파일을 사용하십시오. 구성 파일은,
# ForeignKey's
# Apparently sql_group_column is now replaced by sql_attr_uint
sql_group_column = country_id
sql_group_column = state_id
sql_group_column = listings
# DateField's and DateTimeField's
sql_date_column = date_added
을 이런 식으로 뭔가를 할 수 있습니다하지만 당신은이 값으로 외래 키을 지정할 수 있습니다 것으로 나타났다. STATE_ID와 country_id - - 인 FKS이 표시는 attrs에에서 볼 수있는 바와 같이
print results[0]._sphinx
{'id': u'5246', 'weight': 200, 'attrs': {'state_id': 3, 'country_id': 0}}
, 검색 결과를 인쇄 할 때
Class City(models.Model):
...
# Comment: The below should probly be country_id and state_id
country_id = models.ForeignKey(Country)
state_id = models.ForeignKey(State, blank=True, null=True)
listings = models.PositiveIntegerField(editable=False, default=0)
, 당신은 얻을
another example에 나와 있습니다. 그러나 목록은 그렇지 않습니다.
여기 내 문제가 있습니다. 내 모델에서 임의의 열 foo를 사용하여 스핑크스 검색 결과를 필터링하려면 어떻게해야합니까?
감사합니다.
편집 반 게일에 대한 답변에서
,
실제로 .. 오히려 여기 sql_group_column보다 sql_attr_uint를 사용하고있어 나는 저자에서 .. 위의 예에서도 예를 언급 한 바와 같이 Django Sphinx (위의 링크)는 _Sphinx dict의 속성을 FK가 아닌 경우 표시하지 않습니다 (위의 "알 수 있듯이"참조). 또한, 이미 SQL_Query 문자열도 가지고 있습니다. 내 테이블의 모든 열을 선택합니다. (개별적으로 * 아닙니다)
이 문제에 대한 해결책을 얻었습니까? 나는 그녀를 찔렀다 ... –