Когда мы пытаемся обновить данные с помощью оболочки MOngoDB, данные обновляются. Код:
mycol = mydb["custom"]
newdict= {"name": "test", "employment":"govt_employee}
mycol.insert_one(newdict)
for i in mycol.find():
print (i) ## Data inserted
mycol.update({"name":"test"},{"$push":{"Residence":[{"State":
[{"District":"abcd","zipcode":"874754"}]}]}})
#State may contain n number of Districts !!!
**Result : {'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}**
Районы должны обновляться только по названию теста, так как штат может состоять из множества округов ... Но если мы попытаемся сделать то же самое для сбора клиентов, используя код Flask,
data={"Residence":[{"State":[{"District":"abcd","zipcode":"874754"}]}]}
customer.update(data, upsert=True)
Требуемый вывод:
Если мы вызываем метод put, районы должны добавляться в список состояний.
Flask - ошибка выдачи :
@app.route("/state/<id>/district",methods=["POST"])
def add_district(id):
data=request.get_json()
details= (custom.objects()).to_json()
details=json.loads(details)
dict1={}
districts_name=""
result=""
for i in data.items():
for j in i[1][0].values():
for k in j:
#print (k['name'])
d_name=str(k['name'])
dist_name=record_name.partition('.')
if (dist_name[-1] in [details['dist_name'] for i in details]):
for i in details:
if (i['dist_name'] == dist_name[-1]):
data={"Residence":[{"State":[{"District":"abcd","zipcode":"874754"}]}]}
customer.update(data, upsert=True)
**127.0.0.1 - - [02/May/2020 14:56:08] "POST /zone_auth/5ea844cfe549f57411075af6/record:a
HTTP/1.1" 500 -
Traceback (most recent call last):
File "C:\python3\lib\site-packages\flask\app.py", line 2463, in __call__
return self.wsgi_app(environ, start_response)
File "C:\python3\lib\site-packages\flask\app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "C:\python3\lib\site-packages\flask\app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\python3\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\python3\lib\site-packages\flask\app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "C:\python3\lib\site-packages\flask\app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\python3\lib\site-packages\flask\app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\python3\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\python3\lib\site-packages\flask\app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "C:\python3\lib\site-packages\flask\app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\python3\DNS\zones\auth_zone\authoritative_zone.py", line 85, in add_a_record
result = authoritative_zone.update(record_data, upsert=True)
File "C:\python3\lib\site-packages\mongoengine\document.py", line 605, in update
if self.pk is None:
AttributeError: 'tuple' object has no attribute 'pk'**