Jeff Watkins wrote:
What I'm looking for specifically (and what I really enjoyed in
Hibernate, which in my book sets the standard for ORMs if you hadn't
already guessed) was something like the following:
ImagePlacements
---------------
article_id: Article
image_id: Image
source_name: String
This would allow me to have the following in my data model:
a= Article.get(1)
mainImage= a.imagePlacements["main"]
featureImage= a.imagePlacements["feature"]
This simply can't be done with SQLObject today.
Sure it can. It requires programming. Programming is okay; we're all
programmers, right? Not everything needs to be declarative.
class Article(SQLObject):
def imagePlacements(self, name):
res = list(ImagePlacements.selectBy(article=self,
source_name=name))
assert len(res) == 1
return res[0].image
Well, that's not ['main'], but instead ('main'). Implementing the full
dictionary interface would be nice, but a bit more work (not much,
UserDict.DictMixin handles most of the methods). I'd like SelectResults
instances (what selectBy returns) to have a getOne() method too, which
would handle the assert and whatnot.
A join along these lines would be okay to have; I don't want to bring in
*every* possible case as a declarative construct, but there's certainly
room for a few more. The API might be:
imagePlacements = joins.MappingJoin('ImagePlacements',
keyColumn='sourceName', resultColumn='image')
--
Ian Bicking / [EMAIL PROTECTED] / http://blog.ianbicking.org