MongoEngine / MongoEngine/mongoengine
Fill _instance when adding an embedded document to a list
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 4.3k
- Fork
- 1.2k
- Merge medio
- 4h 41m
- PR unite (30g)
- 11
Descrizione
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>
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia dal commit referenziato, in particolare dal diff collegato intorno alla riga 87, e riproduci la sequenza di append mostrata nell’issue. Verifica il comportamento di EmbeddedDocument prima e dopo averlo aggiunto alla lista padre; è completato quando _instance è valorizzato immediatamente dopo append, con un test di regressione che copra questo caso.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- mongodb, python
- Ambito
- databases
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100