Python Flask restful如何使用()封送mongoengine的reference_字段中的数据?
我使用Python Flask restful如何使用()封送mongoengine的reference_字段中的数据?,python,mongodb,flask,mongoengine,flask-restful,Python,Mongodb,Flask,Mongoengine,Flask Restful,我使用Flask restful和MongoEngine,我想在JSON中显示我的模型的ReferenceField中的数据 我有这2个模型,RoomModel有一个ReferenceField到UserModel: class RoomModel(Document): meta = {'allow_inheritance': True} room_name = StringField() created_by = ReferenceField(UserModel)
Flask restful
和MongoEngine
,我想在JSON中显示我的模型的ReferenceField
中的数据
我有这2个模型,RoomModel
有一个ReferenceField
到UserModel
:
class RoomModel(Document):
meta = {'allow_inheritance': True}
room_name = StringField()
created_by = ReferenceField(UserModel)
class UserModel(Document):
username = StringField()
email = StringField()
我想用()封送\u
从mongoengine查询获得的所有数据到响应,所以我这样做了:
room_model_fields = {
'room_name': fields.String,
'created_by': fields.String(attribute=UserModel._id)
}
room_model_fields_format = {
'rooms': fields.List(fields.Nested(room_model_fields))
}
@staticmethod
@marshal_with(room_model_fields_format)
def get():
room = RoomModel.objects().all()
return {'rooms': room},200
我得到的答复是:
{
rooms": [
{
"room_name": "mobile_legend",
"created_by": "UserModel object" <<--Now: This only return a string with "UserModel object"
"created_by": "SOME_ID_STRING" <<-- THIS IS WHAT I WANT
}
]
}
{
房间“:[
{
“房间名称”:“手机传奇”,
“created_by”:“UserModel object”您需要使用attribute='created_by.id'
。请参见下面的示例:
来自mongoengine导入字符串字段
从flask_restful导入字段,使用
车辆类别(文件):
brand=StringField()
类用户(文档):
car=参考字段(car)
name=StringField()
汽车=汽车(品牌='VW')。保存()
user=user(car=car,name='John Doe').save()
@使用({'name':fields.String,'id':fields.String,'car\u id':fields.String(attribute='car.id'))封送\u
def get():
返回用户
打印(dict(get())#{'car_id':u'5e124e83aa7a17915748ab2','name':u'John Doe','id':u'5e124e83aa7a17915748ab3'}