MongoEngine / MongoEngine/mongoengine
Fill _instance when adding an embedded document to a list
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 4.3k
- Forks
- 1.2k
- Merge medio
- 4 h 41 min
- PR fusionados (30 d)
- 11
Descripción
EmbeddedDocument._instance is not filled when the embedded document as added to a document's list of embedded docs:
https://github.com/MongoEngine/mongoengine/commit/7d90aa76ff7116269dea42f2c6629ea6b868b0de#diff-da780e321f79f4602bab26240c7b0d7dR87
ipdb> l
136 benefit = PurchaseBenefit()
137 coupon.benefits.append(benefit)
138 # HACK: force MongoEngine to fill _instance
139 import ipdb; ipdb.set_trace()
--> 140 coupon.benefits[0]
141 form = PurchaseBenefitForm(request.form if request.method == 'POST' else None, obj=benefit)
142 errors = []
143 if request.method == 'POST' and form.validate():
ipdb> isinstance(benefit, mongoengine.EmbeddedDocument)
True
ipdb> benefit._instance
ipdb> n
> /Users/Vic/projects/brain2/brain/crm/coupons.py(141)edit_coupon_benefit()
140 coupon.benefits[0]
--> 141 form = PurchaseBenefitForm(request.form if request.method == 'POST' else None, obj=benefit)
142 errors = []
ipdb> benefit._instance
Coupon(id='5b915f6a2ac6b371ed8f21df', ...)
ipdb>
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza por el commit referenciado, especialmente por el diff enlazado alrededor de la línea 87, y reproduce la secuencia de append mostrada en el issue. Comprueba el comportamiento de EmbeddedDocument antes y después de añadirlo a la lista principal; se considera terminado cuando _instance está rellenado inmediatamente después de append, con una prueba de regresión que cubra ese caso.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- mongodb, python
- Área
- databases
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100