[Zope-dev] Referring to same interface using zope.schema.Object
Jacob Holm
jh at improva.dk
Fri Jul 22 07:41:32 EDT 2011
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
More information about the Zope-Dev
mailing list