Python 如何附加到MongoEngine中的EmbeddedDocumentListField?

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

我试图在现有列表中添加其他信息,但收到了一条错误消息

错误: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 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)