2010-06-23 84 views
8

我想導出我在從乾草堆搜索視圖中獲取的Queryset中的結果。爲了做到這一點,我發現最好的方法是通過異步方式來完成,所以我使用Celery和Rabbitmq來管理任務,並在那裏創建文件並遍歷所有結果,然後通過電子郵件通知用戶該文件已準備好讓他們抓住它。 但是,爲了傳遞Celery的QuerySet,我需要序列化它。序列化django-haystack查詢集

有沒有快速的方法來做到這一點?或者我應該複製請求參數並重新搜索?

+1

這並不是模型對象或QeurySets傳遞給任務的最佳實踐(見http://ask.github.com/celery/userguide/參見tasks.html#狀態)。 但是,這聽起來像你可能在這裏清楚,只要你以後不改變任務中的任何數據庫狀態。 至於如何對它進行序列化,只要你使用Task.serializer =「pickle」(默認),通常應該可以正常工作,但是在被評估的查詢集中可能有一些不可pickleable的對象。也許你可以包括追溯醃菜給出的? – asksol 2010-06-24 08:05:29

回答

4

可以序列草堆查詢集以JSON是這樣的:

from django.core import serializers 
serializers.serialize("json", [q.object for q in queryset]) 
+0

真棒回答人!!! 。 「)」最後缺失。 ;) – Kishan 2016-06-04 11:17:32