मैं मोंगोडिन के साथ मोंगोएन्गिन के साथ Django में एक एपीआई के लिए बैकएंड के रूप में उपयोग कर रहा हूं। एपीआई बनाने के लिए मैं जिस फ्रेमवर्क का उपयोग कर रहा हूं वह है Django Rest Framework।Django Rest Framework Dictionary फ़ील्ड
मुझे मोंगो में एक क्षेत्र में एक शब्दकोश को स्टोर करने की आवश्यकता है और जब मैंने विधि पोस्ट कहा जाता है तो मैंने सबसे अच्छा किया है, एक charfield का उपयोग करना और function restore_object में शब्दकोश को पार्स करना है।
इस लक्ष्य को प्राप्त करने का एक बेहतर तरीका है?
एक नियम क्षेत्र बनाना बेहतर है? मुझे नहीं पता कि यह कितना मुश्किल हो सकता है।
धन्यवाद।
कुछ कोड दिखाने के लिए संपादित किया गया है, ध्यान दें कि मैं शब्दकोश को एक dict (DictField) के रूप में संग्रहीत करता हूं और इसकी सामग्री एक ऑब्जेक्ट से दूसरे ऑब्जेक्ट में बदल सकती है।
मेरी mongoengine मॉडल है कुछ की तरह:
class MyDoc(mongoengine.Document):
name = mongoengine.StringField(max_length=200)
context = mongoengine.DictField()
और की तरह मेरे serializer कुछ:
class MyDocSerializer(serializers.Serializer):
name = serializers.CharField(max_length=200)
context = serializers.CharField()
url = serializers.HyperlinkedIdentityField(
view_name="drf:mydoc-detail",)
def __init__(self,*args,**kwargs):
super(MyDocSerializer,self).__init__(*args,**kwargs)
def restore_object(self, attrs, instance=None):
#Parse string to dict
#this is so ugly, notice I had to repace ' for " to
#avoid an error parsing the json
context = JSONParser().parse(
StringIO.StringIO(
attrs['context'].replace("'","\"")
)
)
attrs['context'] = context
if instance is not None:
instance.name = attrs['name']
instance.context = context
return instance
return MyDoc(**attrs)
आप अपने दस्तावेज़ परिभाषाएँ और कुछ कोड पोस्ट कर सकता है? मुझे लगता है कि यह उपयोगी होगा – dm03514
आप पिमोंगो सीरियलाइज़र का उपयोग कर सकते हैं - देखें: http://api.mongodb.org/python/current/api/bson/json_util.html – Ross
2016 में आप Django-REST-Framework-Mongoengine का उपयोग कर सकते हैं (https://github.com/umutbozkurt/django-rest-framework-mongoengine), जो आपके मोंगोएन्गिन दस्तावेज़ों के लिए बॉक्स के बाहर धारावाहिक प्रदान करता है। –