On 2011-07-22 13:26, Brian Sutherland wrote:
> This would be my first guess:
> 
>     class INode(Interface):
>         pass
>      
>     INode.parent = Object(
>             title=u"Parent node",
>             schema=INode
>             )
> 
>     INode.children = List(
>             title=u'Child nodes',
>             value_type=Object(schema=INode)
>             )
> 


And that guess would be wrong.  You can't add fields to an existing
schema like that (not sure if you can in other ways).  You *can* change
an existing field however, so a working solution would be:

    class INode(Interface):

        parent = Object(
            title = u'Parent node',
            schema = Interface, # set to INode later
            )

        children = List(
            title = u'Child nodes',
            value_type = Object(schema=Interface), # set to INode later
            )

    INode['parent'].schema = INode
    INode['children'].value_type.schema = INode


Hope this helps

  - Jacob
_______________________________________________
Zope-Dev maillist  -  Zope-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )

Reply via email to