Hey
Quickie post because I gotta go to bed. This bit me a few nights ago, quick
answer:
class Foo(SQLObject):
bar = ForeignKey("Baz")
Column is Foo.q.bazID
You can do Foo.select(AND(Foo.q.bazID == Baz.q.id, Baz.q.something ==
"whatever"))
I agree. SO is rubbish in this respect.
Night night.
-Rob
Matthew Bevan wrote:
> Why does every field in a table have a .q. mapping (to get the SQL name of a
> field) except ForeignKeys? They definitely have a SQL representation, an I
> really do not want to hard-code the column names. I -like- being flexible.
>
> (Cross-posted to Trac.)
>
> Take the following example:
>
> class AtomChildren(SQLObject):
> parent = ForeignKey('Atom')
> child = ForeignKey('Atom')
> sort = IntCol(default = 0)
>
> class Atom(InheritableSQLObject):
> Name = UnicodeCol(length=255)
> Parents = RelatedJoin('Atom', intermediateTable=AtomChildren,
> joinColumn='child_id',
> otherColumn='parent_id',
> addRemoveName="Parent")
> Children = RelatedJoin('Atom', intermediateTable=AtomChildren,
> joinColumn='parent_id',
> otherColumn='child_id',
> addRemoveName="Child")
>
> To do a custom query requires:
>
> result = model.Atom.select(
> AND(model.Atom.q.Name == 'default',
> "atom_children.child=%s" % model.Atom.q.id,
> "atom_children.parent = %d" % node.id))
>
> When it really should be:
>
> result = model.Atom.select(
> AND(model.Atom.q.Name == 'default',
> model.AtomChildren.q.child == model.Atom.q.id,
> model.AtomChildren.q.parent == node.id))
>
> Looking through the code for SQLObject I can't easily see why there would be
> a
> difference.
>
> - Matthew
>
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~----------~----~----~----~------~----~------~--~---