DocumentSchema inside a Document instance.

Offen
#91 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
45/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
databases

Rechercherichtung

Beginne damit, das gezeigte Beispiel mit DocumentSchema, Person und SchemaProperty(Address()) zu reproduzieren, und untersuche anschließend die Initialisierung und das Klonverhalten von SchemaProperty. Erledigt ist die Aufgabe, wenn separate Person-Instanzen nicht mehr dasselbe Address-Objekt gemeinsam verwenden, bestätigt durch erneutes Ausführen der Reproduktion.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Need Feedback

This may have something to do with the clone issue.

>>> from couchdbkit import *
>>> class Address(DocumentSchema):
...     address = StringProperty()
...     
>>> class Person(Document):
...     name = StringProperty()
...     address = SchemaProperty(Address())
...     
>>> p = Person()
>>> p.name = 'XXX'
>>> p.address.address = 'XXX ADDRESS'
>>> p.name
u'XXX'
>>> p.address.address
u'XXX ADDRESS'
>>> p2 = Person()
>>> p2.address.address
u'XXX ADDRESS'
>>> p2.name

As you can see, because I am declaring Address() in the constructor of SchemaProperty, any new instances always point to the same object.
I have tried to get around this by trying to make a new Address object in init, but I cannot seem to get it to work.

Vorherrschende Sprache
Python
Sterne
261
Forks
90
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus benoitc/couchdbkit

Alle Issues in benoitc/couchdbkit

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

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