Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django NoRel中保存嵌套模型会给出;can';“t编码”;错误_Python_Django_Mongodb_Pymongo_Django Nonrel - Fatal编程技术网

Python 在Django NoRel中保存嵌套模型会给出;can';“t编码”;错误

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

我可以保存“节点”、“链接”,但不能保存“图形”(请参见下面的错误)。 使用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('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