2
我有这样的事情:修改烧瓶不宁结果数组
{
"id": 1,
"username": "plasmy",
"userdetails": [
{
"detail": "A Name",
"detail_name": "Full Name",
"id": 1,
"user_id": 1
},
{
"detail": "[email protected]",
"detail_name": "Email",
"id": 2,
"user_id": 1
},
{
"detail": "An Address",
"detail_name": "Address",
"id": 3,
"user_id": 1
},
{
"detail": "999-999-9999",
"detail_name": "Phone Number",
"id": 4,
"user_id": 1
}
]
}
此之际,使用Flask_Restless和SQLAlchemy的结果。有一个用户表和userdetails的表,放在该JSON的userdetails部分。我想要做的是,找到一种方法,其中的数据可以是这样的:
{
"id": 1,
"username": "plasmy",
"userdetails": {
"Full Name": "A Name",
"Email": "[email protected]",
"Address": "An Address",
"Phone Number": "A Phone Number"
}
}
看我怎么删除ID和我使用的字段“DETAIL_NAME”为重点和“细节”的价值。我尝试使用预处理器,但他们没有工作,或者我错误地使用它们。我把预处理器放在“子”表中。
这就是我想这样做(但不工作):
def detail_sort(results):
return {'user_details': results['userdetails']}
manager.create_api(User, methods=['GET', 'POST'])
manager.create_api(UserDetails, methods=['GET', 'POST'],
preprocessors={
'GET_COLLECTION': [detail_sort]
})
我试过GET_COLLECTION,GET_SINGLE和GET_MANY。任何帮助,将不胜感激。
UPDATE:这里是新的代码我试图根据答案
from flask import Blueprint
from medinv import manager
from medinv.User.models import User, UserDetails
blueprint = Blueprint('blueprint', __name__)
@blueprint.route('/')
@blueprint.route('/home')
def home():
return "Welcome."
def detail_sort(results):
print(results)
results['userdetails'] = {item['detail_name']: item['detail'] for item in results['userdetails']}
return results['userdetails']
manager.create_api(User, methods=['GET', 'POST'])
manager.create_api(UserDetails, methods=['GET', 'POST'],
postprocessors={
'GET_COLLECTION': [detail_sort]
})
谢谢你的回答。我试过了,但没有奏效。我将在原始文章中编辑我的views.py代码,以查看是否可以看到任何错误。此外,说结果['userdetails'] = ....的部分给我一个错误,说这是不可能的。我试着改变它,只返回结果['userdetails']并且错误消失,但它仍然不起作用。事实上,我尝试做一个打印,它不会到达那里(detail_sort)。 – plasmy
@plasmy你会得到什么错误?尝试先在结果中为关键用户代码设置值,然后将其返回。我没有测试过我的代码。 – Nurjan
是的,我确实尝试过,错误没有出现。问题是它仍然没有做我想做的事。 – plasmy