0
Django 1.6,Python 3.3和haystack有以下問題。基本上我試圖在乾草堆中使用LocationField,但不幸的是不是很成功。<在XXX>的點對象不是JSON可序列化
這是python trow的例外。
<Point object at 0x7fe54e41d9a0> is not JSON serializable
和我search_indexes.py代碼:
class ListingIndex(indexes.SearchIndex, indexes.Indexable):
....
location = indexes.LocationField(model_attr='get_location')
....
def get_model(self):
return Listing
而在models.py():
...
from haystack.utils.geo import Point
...
class Listings(models.Model):
...
def get_location(self):
return Point(self.lng, self.lat)
我已經搜索在谷歌和SO和幾個小時學習了很多針對序列化Django對象的知識,但沒有找到任何結果,這有助於我在這裏找到解決方案。 在此先感謝。
請提供完整的追溯。你得到的異常是由於嘗試將對象實例序列化爲JSON而造成的,這顯然是在你決定發佈的代碼之外的地方完成的。 – lanzz
這是因爲Django默認使用不能序列化python對象的JSONSerializer。您可以通過將JSONSerializer更改爲PickleSerializer(這不太安全)在Django文檔中更多地瞭解此內容,從而在Django設置中更改此設置。 –
一旦您知道如何更改序列化程序,請查看json的模塊文檔。您可以添加一個參數'default',將該對象轉換爲json可序列化形式。 – User