Python 如何使用ReferenceField处理和测试Mongoengine对象?
所以 我正在用Flask RESTful、MongoEngine和marshmallow编写一个REST Api,并且在测试具有引用字段的模型时遇到了一些问题 我有一个“Praia”模型,它有一个“atividades”引用字段 当我经过时Python 如何使用ReferenceField处理和测试Mongoengine对象?,python,json,flask,mongoengine,Python,Json,Flask,Mongoengine,所以 我正在用Flask RESTful、MongoEngine和marshmallow编写一个REST Api,并且在测试具有引用字段的模型时遇到了一些问题 我有一个“Praia”模型,它有一个“atividades”引用字段 当我经过时 class PraiasSerializer(Schema): id = fields.String() atividades = fields.Nested(AtividadesSerializer, many=True) class Met
class PraiasSerializer(Schema):
id = fields.String()
atividades = fields.Nested(AtividadesSerializer, many=True)
class Meta:
additional = ('nome', 'descricao')
model = {'nome': 'nome', 'descricao': 'descricao',
atividades: [ativ1.id, ativ2.id]}
praia = Praias(**model)
data = PraiasSerializer(praia).data
data.pop('id')
self.client.post('/v1/praias', data=data,
content_type='application/json')
即使有了这些数据。pop('id')为了使我的模型不向我的控制器发送'id',我收到了一个类型错误:add_file()得到了一个意外的关键字参数'id'
打印此数据变量时,我得到以下输出:
{u'atividades': [{u'id': u'5501dee0e13823649320299d'}, {u'id': u'5501dee0e13823649320299c'}], u'descricao': u'Portao e sucesso!', u'nome': u'Porto da Barra'}
我该怎么办?我找到答案了
我只是改变了为post请求装载json数据的方式
我使用的不是序列化程序或json.dumps(模型),而是:
model = {'nome': 'nome', 'descricao': 'descricao',
atividades: [str(ativ1['id']), str(ativ2['id'])]}
data = json.dumps(model)
我对id上的str进行了转换,因为Python不知道如何用JSON序列化ObjectId
现在这个请求就行了 我已经通过邮递员向我的API发送了一个请求,这是有效的!我测试中的问题是来自棉花糖嵌套字段的dict的id列表。。。