MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

ReferenceField com referência ao documento existente


Você está fazendo isso errado. Você deve salvar uma referência aos seus Materials objeto então passe-o como argumento para Regenerators

Demonstração
class Materials(Document):
    title = StringField(unique=True, required=True)

class Regenerators(Document):
    material = ReferenceField(Materials, required=True)

m = Materials(title='aisi304').save()

r = Regenerators(material=m).save()

Então seus documentos ficam assim:
> db.regenerators.find()
{
        "_id" : ObjectId("565c9d110acf4510cf1f8712"),
        "material" : ObjectId("565c9cfc0acf4510cf1f8711")
}
> db.materials.find()
{ "_id" : ObjectId("565c9cfc0acf4510cf1f8711"), "title" : "aisi304" }
> 

Se você quiser usar uma referência a um documento existente, precisará emitir uma consulta usando o .get método, em seguida, passe a referência como argumento para Regenerators
m = Materials.objects.get(title='aisi304')
r = Regenerators(material=m).save()