tl, डॉ: कोई निर्मित समारोह है जो एक मोंगोइंजिन दस्तावेज़ JSON में परिवर्तित करेगा। तो आपको अपना खुद लिखना होगा।
views.py में:
def show_results_async(text):
query = { '$or':[{'title':{'$regex':text}},{'author':{'$regex':text}} ]}
posts = Posts.objects(__raw__=(query))
return jsonify(result=posts.to_dict())
post.py में, जोड़ें:
def to_dict(self):
return helper.mongo_to_dict(self)
helper.py में:
def mongo_to_dict(obj):
return_data = []
if isinstance(obj, Document):
return_data.append(("id",str(obj.id)))
for field_name in obj._fields:
if field_name in ("id",):
continue
data = obj._data[field_name]
if isinstance(obj._fields[field_name], DateTimeField):
return_data.append((field_name, str(data.isoformat())))
elif isinstance(obj._fields[field_name], StringField):
return_data.append((field_name, str(data)))
elif isinstance(obj._fields[field_name], FloatField):
return_data.append((field_name, float(data)))
elif isinstance(obj._fields[field_name], IntField):
return_data.append((field_name, int(data)))
elif isinstance(obj._fields[field_name], ListField):
return_data.append((field_name, data))
elif isinstance(obj._fields[field_name], EmbeddedDocumentField):
return_data.append((field_name, mongo_to_dict(data)))
return dict(return_data)
कुछ नोट:
- यदि आपके दस्तावेज़ में अतिरिक्त फ़ील्ड प्रकार हैं, तो आपको उपरोक्त सहायक फ़ंक्शन को बढ़ाने की आवश्यकता है।
- उपरोक्त सहायक विधि Thomas' answer to a question से प्रेरित थी। अतिरिक्त कार्यक्षमता में शामिल हैं: एम्बेडेड दस्तावेज़ों को दोबारा प्रिंट करें और दस्तावेज़ की आईडी शामिल करें।
कारण है कि यह '__raw __ = (क्वेरी)' है? क्या आपका मतलब '__raw __ = (क्वेरी,) 'या' __raw __ = क्वेरी' था? –