Tôi đang sử dụng Mongodb với mongoengine làm phụ trợ cho API trong Django. Khung tôi đang sử dụng để tạo api là Django Rest Framework.Từ điển Django Rest Framework Dictionary
Tôi cần lưu trữ một từ điển trong một trường ở Mongo và tốt nhất tôi đã thực hiện khi phương thức đăng bài được gọi là sử dụng một từ và phân tích từ điển trong hàm restore_object.
Có cách nào tốt hơn để đạt được mục tiêu này?
Bạn nên tạo trường dict tốt hơn? Tôi không biết làm thế nào khó khăn này có thể được.
Cảm ơn bạn.
chỉnh sửa để hiển thị một số mã, lưu ý rằng tôi lưu trữ từ điển dưới dạng dict (DictField) và nội dung của nó có thể thay đổi từ một đối tượng này sang đối tượng khác.
mô hình mongoengine của tôi là một cái gì đó như:
class MyDoc(mongoengine.Document):
name = mongoengine.StringField(max_length=200)
context = mongoengine.DictField()
và một cái gì đó serializer tôi như:
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)
bạn có thể gửi tài liệu định nghĩa của bạn và một số mã? Tôi nghĩ rằng nó sẽ hữu ích – dm03514
Bạn có thể sử dụng serializers pymongo - xem: http://api.mongodb.org/python/current/api/bson/json_util.html – Ross
Trong năm 2016, bạn có thể sử dụng Django-REST-Framework-Mongoengine (https://github.com/umutbozkurt/django-rest-framework-mongoengine), cung cấp serializers cho tài liệu Mongoengine của bạn ra khỏi hộp. –