[storm] Does one have to create the one-to-many ref. is it's not neede in the object?

James Henstridge james at jamesh.id.au
Tue Jul 22 14:22:24 BST 2008


On Tue, Jul 22, 2008 at 6:15 PM, Gabriel Rossetti
<gabriel.rossetti at arimaz.com> wrote:
> Hello everyone,
>
> I am following the official tutorial and I have a small question.
> In the one-to-many reference type, does it have to be defined if I don't
> need the attribute? If I created my database with a "user" and a "lang"
> table, their is a one-to-many relationship in between them, but in my
> python objects, the "User" object needs a one-to-one ref to the "Lang"
> class/table, but I don't need a ref to the "User" from the "Lang" class.
> Does Storm need for me to put it there so it knows how everything comes
> together? Here are the Tables :

If you don't need to use the ReferenceSet() in your code, you should
be able to leave it out of your table definition.

>
> User(id, fname, lname, lang_id)
> Lang(id, name)
>
> where "id" are primary keys and "lang_id" is a foreign key, and the
> classes are defines as the following :
>
> class User(object):
>    __storm_table__ = "user"
>
>    id = Int(primary=True)
>    fname = Unicode()
>    lname = Unicode()
>    langId = Int()

You should either name this variable lang_id, or use Int("lang_id") if
you want this to match up with your table definition.

>    lang = Reference(langId, Lang.id)

You can probably use the following to do a forward reference here:

    lang = Reference(lang_id, 'Language.id')

>
> class Language(object):
>    __storm_table__ = "lang"
>
>    id = Int(primary=True)
>    name = Unicode()
> #    users = ReferenceSet(id, User.id)
>
> Thank you,
> Gabriel


James.



More information about the storm mailing list