我經歷的Django的獅身人面像documentation,它看起來像它允許您使用屬性來過濾搜索結果,使用屬性的Django-sphinx結果過濾?
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]
從一些例子,這些屬性似乎是一些你在獅身人面像指定配置文件,而不是表中的實際列值。該配置文件允許這樣的事情,
# 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
但事實證明,你只能指定外鍵作爲該值。如圖所示在another example,
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)
當打印搜索結果,你得到的,
print results[0]._sphinx
{'id': u'5246', 'weight': 200, 'attrs': {'state_id': 3, 'country_id': 0}}
正如你所看到的,在ATTRS - STATE_ID和COUNTRY_ID - 是FKS,顯示出來。但上市不。
這裏是我的問題。如果我想在我的模型中使用aribtrary列foo過濾我的獅身人面像搜索結果 - 我該怎麼做?
謝謝!
編輯
在回答凡大風,
我實際使用sql_attr_uint而不是sql_group_column這裏..正如我在上面的例子中從筆者提到..連例子Django Sphinx(上面給出的鏈接)在_Sphinx字典中不顯示屬性,如果它不是FK ..(請參閱上面的「正如你可以看到的」語句)。此外,我已經有SQL_Query字符串..它選擇我的表中的所有列..(單獨,而不是*)
你有解決這個問題嗎?我卡住了她... – 2010-10-27 18:39:51