Я использую Flask-Eve для предоставления API для своих данных. Я хотел бы вставить свои записи, используя Eve, чтобы получить атрибут _created и другие атрибуты, добавленные Eve.
Два моих поля — это слова, а одно — список. Когда я пытаюсь вставить это Еве, кажется, что структура становится плоской, теряется часть информации. Попытка рассказать Еве об элементах dict и list выдает мне ошибку при POST, говоря, что эти поля должны быть dicts и lists, но они уже есть! Пожалуйста, может кто-нибудь помочь мне и сказать мне, что я делаю неправильно?
Моя конфа в Еве выглядела так:
'myendpoint': { 'allow_unknown': True,
'schema': { 'JobTitle': { 'type': 'string',
'required': True,
'empty': False,
'minlength': 3,
'maxlength': 99 },
'JobDescription': { 'type': 'string',
'required': True,
'empty': False,
'minlength': 32,
'maxlength': 102400 },
},
},
Но когда я POST следующую структуру, используя запросы:
{
"_id" : ObjectId("56e840686dbf9a5fe069220e"),
"Salary" : {
"OtherPay" : "On Application"
},
"ContactPhone" : "xx",
"JobTypeCodeList" : [
"Public Sector",
"Other"
],
"CompanyName" : "Scc",
"url" : "xx",
"JobTitle" : "xxx",
"WebAdID" : "TA7494725_1_1",
"JobDescription" : "xxxx",
"JobLocation" : {
"DisplayCity" : "BRIDGWATER",
"City" : "BRIDGWATER",
"StateProvince" : "Somerset",
"Country" : "UK",
"PostalCode" : "TA6"
},
"CustomField1" : "Permanent",
"CustomField3" : "FTJOBUKNCSG",
"WebAdManagerEmail" : "xxxx",
"JobType" : "Full",
"ProductID" : "JCPRI0UK"
}
Строка поста выглядит так:
resp = requests.post(url, data = job)
Он становится «сплющенным» и теряет информацию из диктов и списка:
{
"_id" : ObjectId("56e83f5a6dbf9a6395ea559d"),
"Salary" : "OtherPay",
"_updated" : ISODate("2016-03-15T16:59:06Z"),
"ContactPhone" : "xx",
"JobTypeCodeList" : "Public Sector",
"CompanyName" : "Scc",
"url" : "xxx",
"JobTitle" : "xx",
"WebAdID" : "TA7494725_1_1",
"JobDescription" : "xxx",
"JobLocation" : "DisplayCity",
"CustomField1" : "Permanent",
"_created" : ISODate("2016-03-15T16:59:06Z"),
"CustomField3" : "FTJOBUKNCSG",
"_etag" : "55d8d394141652f5dc2892a900aa450403a63d10",
"JobType" : "Full",
"ProductID" : "JCPRI0UK"
}
Я попытался обновить свою схему, чтобы сказать, что некоторые из них являются диктовками и списками:
'JobTypeCodeList': { 'type': 'list'},
'Salary': { 'type': 'dict'},
'JobLocation': { 'type': 'dict'},
Но затем, когда я POST в новой записи, я получаю сообщение об ошибке
{u'Salary': u'must be of dict type', u'JobTypeCodeList': u'must be of list type', u'JobLocation': u'must be of dict type'},
Я проверил перед POST, что type(job.Salary) == dict
и т. д., поэтому я не уверен, как это решить. Хотя я могу отправить запись непосредственно в MongoDB, минуя Eve, я бы предпочел использовать Eve, если это возможно.