MongoEngine / MongoEngine/mongoengine
Fill _instance when adding an embedded document to a list
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 4.3k
- Forks
- 1.2k
- Ø Merge
- 4 Std. 41 Min.
- Gemergte PRs (30 T.)
- 11
Beschreibung
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>
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem referenzierten Commit, insbesondere mit dem verlinkten Diff um Zeile 87, und reproduziere die im Issue gezeigte append-Sequenz. Prüfe das Verhalten von EmbeddedDocument vor und nach dem Hinzufügen zur übergeordneten Liste; abgeschlossen ist es, wenn _instance unmittelbar nach dem append befüllt ist, mit einem Regressionstest, der diesen Fall abdeckt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- mongodb, python
- Bereich
- databases
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100