Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用ReferenceField处理和测试Mongoengine对象?_Python_Json_Flask_Mongoengine - Fatal编程技术网

Python 如何使用ReferenceField处理和测试Mongoengine对象?

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

所以

我正在用Flask RESTful、MongoEngine和marshmallow编写一个REST Api,并且在测试具有引用字段的模型时遇到了一些问题

我有一个“Praia”模型,它有一个“atividades”引用字段

当我经过时

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列表。。。