2010-06-23 29 views
8

Samanlık arama görünümünden elde ettiğim Queryset'te sahip olduğum sonuçları vermek istiyorum. Bunu yapmak için en iyi yolun asyncronally yaparak yaptıklarını buldum, bu yüzden görevi yönetmek için Kerevit ve Rabbitmq kullanıyorum ve orada dosya oluşturup tüm sonuçları yineleyin ve kullanıcıyı e-postayla bilgilendirin. Dosya, onu ele geçirmek için hazır. Ancak, QuelerySet'i geçmek için serileştirmem gerekiyor.Bir django-haystack queryset'i seri hale getirme

Bunu yapmanın hızlı bir yolu var mı? Veya istek parametrelerini kopyalayıp aramayı yeniden yapmalı mıyım?

+1

Bu görevlere modeli nesneleri veya QeurySets geçirmek için en iyi yöntem değil (http://ask.github.com/celery/userguide/ bkz tasks.html # durumu). Ama daha sonra görevde herhangi bir veritabanı durumunu değiştirmediğiniz sürece burada olabileceğiniz gibi görünüyor. Dizinin nasıl serileştirileceğine ilişkin olarak, genellikle Task.serializer = "pickle" (varsayılan) kullandığınız sürece bu düzgün çalışmalıdır, değerlendirilen queryset'te, seçilemez olmayan bazı nesneler olabilir. Belki de traceback turşu verebilirsiniz? – asksol

cevap

4

Böyle JSON Samanlık Sorgu Kümesi serialize:

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

Harika cevap adam! . Sonunda ")" eksik. ;) – Kishan

İlgili konular