2010-11-27 15 views
1

私はcouchdbkitでこれをたくさん実行しました。couchdbkit Documentオブジェクトの下の子オブジェクトに親に戻って参照することはできません。私はしかし、私は間違っている願っています。今、私がやっているものをcouchdbkitで親オブジェクトをルックアップする方法はありますか?

class Child(DocumentSchema): 
    name = StringProperty() 
    def parent(self): 
     # How do I get a reference to the parent object here? 
     if self.parent.something: 
       print 'yes' 
     else: 
       print 'no' 

class Parent(Document): 
    something = BooleanProperty() 
    children = SchemaListProperty(Child) 

doc = Parent.get('someid') 
for c in doc.children: 
    c.parent() 

は、親オブジェクトの周りに渡すことですが、私はこのアプローチを好みません。

答えて

1

私はちょうどcouchdbkitの作者とチャットし、明らかに私がやろうとしていることは今サポートされていません。

1

ときどき返す前に_parent属性を設定する親に、get_childまたはget_childrenメソッドを書き込みます。すなわち:あなたは、各サブdocに関するこれらのアクセサメソッドを記述する必要があります(または:明確であるcouchdbkitそれを持つ対

class Child(DocumentSchema): 
    name = StringProperty() 
    def parent(self): 
     if self._parent.something: 
      print 'yes' 
     else: 
      print 'no' 

これの欠点を:

class Parent(Document): 
    something = BooleanProperty() 
    children = SchemaListProperty(Child) 
    def get_child(self, i): 
     "get a single child, with _parent set" 
     child = self.children[i] 
     child._parent = self 
     return child 
    def get_children(self): 
     "set _parent of all children to self and return children" 
     for child in self.children: 
      child._parent = self 
     return children 

は、カウスのあなたのようなコードを書くことができますあなたにはこれを追加する関数を書いてください)、もっと厄介なことに、p.get_child(3)またはp.get_children()[3]を常に呼び出して、最後にget_childrenを呼び出してから_parentの子を追加したかどうか心配する必要があります。

関連する問題