Re: One to Many Relationships
Sebastien Bigaret <[email protected]> Wed, 18 Aug 2004 11:44:37 +0200
| Newsgroups | gmane.comp.python.modeling |
|---|---|
| Message-ID | <[email protected]> |
Hi Dennis,
The problem is that you forgot to indicate in your model that it is a
to-many relationship, so the script reacts as if it was a to-one
relationship. See section 2.5.5. in the User's Guide; a unbound to-many
relationship typically defines:
multiplicityLowerBound='0'
multiplicityUpperBound='*'
(in your case you got the default values, i.e. respectively '0' and
'1', defining a to-one relationship)
Please also note that there is currently nothing in the framework that
makes sure that your XML-models does not rely on defaults that have
changed between two releases (this is not the case for PyModels, which
defines a 'version' field for this very purpose, see section 2.4.4).
The reason why there is no such mechanism is that the xml model is not
supposed to rely on defaults... even if I fear that this is not said
at all in the User's Guide.
It does NOT mean you should always specify every possible fields in
your xml model: it just means that you should be careful. When in doubt,
you can easily have your model dumped in another xml model with all its
value defined:
>>> from Modeling.Model import loadModel
>>> model=loadModel('your_model.xml')
>>> model.saveModelAsXMLFile('FULLY_QUALIFIED_MODEL.xml')
Just a little warning: be sure to give an other filename, or you'll
overwrite your own model!
-- Sébastien.
Kertis, Dennis wrote:
> I am trying to define a one-to-many relationship in XML. However,
> I am getting the following error:
>
> Object: Relationship Category.topics
> ------------------------------------
> * Error(s):
> - relationship is not mandatory but source attribute Category.id
> is required
>
> Can anyone tell me the correct way to model a one-to-many with Modeling?
> My "many" table has a foreign key to the primary key of my "one" table,
> but modeling doesn't seem to like this.
>
> Below is a cutdown of my model.
>
> <entity
> name='Topic'>
> <primaryKey attributeName='id'/>
> <attribute
> name='id'
> type='int'
> isRequired='1'/>
> <attribute
> name='categoryID'
> type='int'
> isRequired='1'/>
> </entity>
> <entity
> name='Category'
> <primaryKey attributeName='id'/>
> <attribute
> name='id'
> type='int'
> isClassProperty='0'
> isRequired='1'/>
> <relation
> name='topics'
> destinationEntity='Topic'>
> <join
> sourceAttribute='id'
> destinationAttribute='categoryID'/>
> </relation>
> </entity>
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285