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