Python 在Django NoRel中保存嵌套模型会给出;can';“t编码”;错误
我可以保存“节点”、“链接”,但不能保存“图形”(请参见下面的错误)。 使用pymongo 2.1.1、Django NoRel和Python 2.7:Python 在Django NoRel中保存嵌套模型会给出;can';“t编码”;错误,python,django,mongodb,pymongo,django-nonrel,Python,Django,Mongodb,Pymongo,Django Nonrel,我可以保存“节点”、“链接”,但不能保存“图形”(请参见下面的错误)。 使用pymongo 2.1.1、Django NoRel和Python 2.7: from django.db import models from djangotoolbox.fields import SetField, ListField, EmbeddedModelField class Graph(models.Model): links = ListField(EmbeddedModelField('L
from django.db import models
from djangotoolbox.fields import SetField, ListField, EmbeddedModelField
class Graph(models.Model):
links = ListField(EmbeddedModelField('Link'))
class Link(models.Model):
parent = EmbeddedModelField('Node')
child = EmbeddedModelField('Node')
class Node(models.Model):
extent = SetField() # set of strings e.g. "Gene-Bmp4"
intent = SetField() # set of strings
--
产生错误:
/Library/Python/2.7/site packages/pymongo-2.1.1-py2.7-macosx-10.7-intel.egg/pymongo/collection.py:312:RuntimeWarning:无法编码-重新加载Python模块并重试。如果您在没有收到InvalidDocument异常的情况下看到了这一点,请参见api.mongodb.org/python/current/faq.html#pymongo是否与mod wsgi一起工作
Exception Type: InvalidDocument
Exception Value: Cannot encode object: set(['Attr2', 'Attr1'])
Exception Location: /Library/Python/2.7/site-packages/pymongo-2.1.1-py2.7-macosx-10.7-intel.egg/pymongo/collection.py in insert, line 312
有人知道我该怎么做吗?这里的问题是,您不能将“set”类型的对象编码为BSON,因为BSON没有“set”类型
最好的解决方案是在保存图形之前将集合转换为数组。在我看来像个bug。请在
Exception Type: InvalidDocument
Exception Value: Cannot encode object: set(['Attr2', 'Attr1'])
Exception Location: /Library/Python/2.7/site-packages/pymongo-2.1.1-py2.7-macosx-10.7-intel.egg/pymongo/collection.py in insert, line 312