我有一个使用 MongoEngine 的架构,看起来像这样
class User(db.Document)
email = db.EmailField(unique=True)
class QueueElement(db.EmbeddedDocument):
accepts = db.ListField(db.ReferenceField('Resource'))
user = db.ReferenceField(User)
class Resource(db.Document):
name = db.StringField(max_length=255, required=True)
current_queue_element = db.EmbeddedDocumentField('QueueElement')
class Queue(db.EmbeddedDocument):
name = db.StringField(max_length=255, required=True)
resources = db.ListField(db.ReferenceField(Resource))
queue_elements = db.ListField(db.EmbeddedDocumentField('QueueElement'))
class Room(db.Document):
name = db.StringField(max_length=255, required=True)
queues = db.ListField(db.EmbeddedDocumentField('Queue'))
Run Code Online (Sandbox Code Playgroud)
我想返回一个 Room 对象的 JSON 对象,该对象将包括有关其队列的信息(连同引用的资源)和嵌套的 queue_elements(连同它们引用的“接受”引用和用户引用)
但是,当我想返回取消引用其关系的 Room 时:
room = Room.objects(slug=slug).select_related()
if (room):
return ast.literal_eval(room.to_json())
abort(404)
Run Code Online (Sandbox Code Playgroud)
我没有得到任何取消引用。我得到:
{
"_cls":"Room",
"_id":{
"$oid":"552ab000605cd92f22347d79"
},
"created_at":{
"$date":1428842482049
},
"name":"second",
"queues":[
{
"created_at":{
"$date":1428842781490
},
"name":"myQueue",
"queue_elements":[ …Run Code Online (Sandbox Code Playgroud)