Tengo un escenario en el que necesito crear un clon de algunos productos en mi mongoDB. Yo uso el siguiente código
for single_product in survey_products: cloned_product = without_keys(single_product, {'_id'}) cloned_product_doc = Product(**cloned_product) cloned_product_doc.save() print(cloned_product_doc.id) print(cloned_product_doc._id) Esto crea los registros correctamente, lo cual está bien, pero en ambas funciones de print , obtengo None aunque llamo a cloned_product_doc.save() antes de acceder a las IDs .
¿Cómo puedo obtener el ID de las nuevas entradas?
EDITADO
Aquí está la definición del modelo.
class Product(Document): # model _id = ObjectIdField() photo = StringField() name = StringField() price = FloatField() currency = StringField() class Meta: db_table = 'product'Edite la definición del modelo como se muestra a continuación, asegúrese de definir el ObjectId como predeterminado
......................... from mongoengine import * from bson import ObjectId #import objectID to use as default class Product(Document): # model _id = ObjectIdField(default=ObjectId) # mention default as ObjectId photo = StringField() name = StringField() price = FloatField() currency = StringField() class Meta: db_table = 'product'Bajo uso normal, Mongoengine agrega la identificación a la instancia cuando llama a .save().
from mongoengine import * connect() class MyDoc(Document): # Mongoengine adds an id = ObjectIdField if no 'id' is provided s = StringField() doc = MyDoc(s='garbage').save() print(doc.id) # eg 600df8c3d87af06b92725f87 Sugeriría inspeccionar lo que hay en su cloned_product . Tal vez haya una clave 'id' restante o algo que interfiere con el comportamiento predeterminado