Python 如何附加到MongoEngine中的EmbeddedDocumentListField?
我试图在现有列表中添加其他信息,但收到了一条错误消息 错误:4.提供给的嵌入文档实例无效 EmbeddedDocumentField:['family']Python 如何附加到MongoEngine中的EmbeddedDocumentListField?,python,mongodb,rest,mongoengine,flask-mongoengine,Python,Mongodb,Rest,Mongoengine,Flask Mongoengine,我试图在现有列表中添加其他信息,但收到了一条错误消息 错误:4.提供给的嵌入文档实例无效 EmbeddedDocumentField:['family'] 这是我的解决办法。希望能有帮助 @app.route('/api/add_family/<h_id>', methods=['POST']) def add_family(h_id): ''' family member is added only if its not already in the databas
这是我的解决办法。希望能有帮助
@app.route('/api/add_family/<h_id>', methods=['POST'])
def add_family(h_id):
'''
family member is added only if its not already in the database
'''
edited = False
content = request.json
h = House.objects.get(house_id=h_id).to_json()
h = json.loads(h)
family_arr = h['family']
if family_arr:
# family_arr not empty
count = family_arr[-1].get('id') + 1
else:
count = 1
for new_name in content['family']:
if not dup_name_check(family_arr, new_name['name']):
new_name.update({'id': count})
family_arr.append(new_name)
count += 1
edited = True
if edited:
House.objects.get(house_id=h_id).update(family=family_arr)
return make_response(f"Successfully added family member in House ID:{h_id}", 201)
else:
return make_response(f"Duplicated entries detected!", 400)
@app.route('/api/add_family/',methods=['POST']))
def add_系列(h_id):
'''
仅当族成员不在数据库中时,才会添加该族成员
'''
编辑=假
content=request.json
h=House.objects.get(House\u id=h\u id).to\u json()
h=json.loads(h)
族_arr=h[“族”]
如果是家庭成员:
#家庭成员不是空的
count=family\u arr[-1]。获取('id')+1
其他:
计数=1
对于内容['family']中的新名称:
如果不重复姓名检查(家庭、新姓名['name']):
新名称。更新({'id':count})
家庭协议附加(新名称)
计数+=1
编辑=真
如果编辑:
House.objects.get(House\u id=h\u id).update(family=family\u arr)
return make_response(f“成功添加了家庭成员的内部ID:{h_ID}”,201)
其他:
返回make_响应(f“检测到重复条目!”,400)
这是我的解决方案。希望能有帮助
@app.route('/api/add_family/<h_id>', methods=['POST'])
def add_family(h_id):
'''
family member is added only if its not already in the database
'''
edited = False
content = request.json
h = House.objects.get(house_id=h_id).to_json()
h = json.loads(h)
family_arr = h['family']
if family_arr:
# family_arr not empty
count = family_arr[-1].get('id') + 1
else:
count = 1
for new_name in content['family']:
if not dup_name_check(family_arr, new_name['name']):
new_name.update({'id': count})
family_arr.append(new_name)
count += 1
edited = True
if edited:
House.objects.get(house_id=h_id).update(family=family_arr)
return make_response(f"Successfully added family member in House ID:{h_id}", 201)
else:
return make_response(f"Duplicated entries detected!", 400)
@app.route('/api/add_family/',methods=['POST']))
def add_系列(h_id):
'''
仅当族成员不在数据库中时,才会添加该族成员
'''
编辑=假
content=request.json
h=House.objects.get(House\u id=h\u id).to\u json()
h=json.loads(h)
族_arr=h[“族”]
如果是家庭成员:
#家庭成员不是空的
count=family\u arr[-1]。获取('id')+1
其他:
计数=1
对于内容['family']中的新名称:
如果不重复姓名检查(家庭、新姓名['name']):
新名称。更新({'id':count})
家庭协议附加(新名称)
计数+=1
编辑=真
如果编辑:
House.objects.get(House\u id=h\u id).update(family=family\u arr)
return make_response(f“成功添加了家庭成员的内部ID:{h_ID}”,201)
其他:
返回make_响应(f“检测到重复条目!”,400)
@app.route('/api/add_family/<h_id>', methods=['POST'])
def add_family(h_id):
'''
family member is added only if its not already in the database
'''
edited = False
content = request.json
h = House.objects.get(house_id=h_id).to_json()
h = json.loads(h)
family_arr = h['family']
if family_arr:
# family_arr not empty
count = family_arr[-1].get('id') + 1
else:
count = 1
for new_name in content['family']:
if not dup_name_check(family_arr, new_name['name']):
new_name.update({'id': count})
family_arr.append(new_name)
count += 1
edited = True
if edited:
House.objects.get(house_id=h_id).update(family=family_arr)
return make_response(f"Successfully added family member in House ID:{h_id}", 201)
else:
return make_response(f"Duplicated entries detected!", 400)