MongoEngine / MongoEngine/mongoengine

Fill _instance when adding an embedded document to a list

Offen
#1,925 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.