Hi there,

I have two tables mapped like this:

jobs = Table("jobs", __meta__,
                Column("jobno", Unicode(15), primary_key=True),
                Column("created", DateTime, nullable=False,
default=datetime.now),
                Column("deleted", Boolean, nullable=False, default=False))

class Job(object):

    @constructor
    def __init__(self, jobno=None):
        if jobno:
            self.jobno = jobno

mapper(Job, jobs)


pages = Table("pages", __meta__,
                Column("jobno", Unicode(15), ForeignKey("jobs.jobno"),
primary_key=True),
                Column("pagename", Unicode(30), primary_key=True),
                Column("created", DateTime, nullable=False,
default=datetime.now),
                Column("deleted", Boolean, nullable=False, default=False),
                Column("current_version", Integer))

class Page(object):

    @constructor
    def __init__(self, job=None, pagename=None):
        if job:
            self.job = job
        if pagename:
            self.pagename = pagename
        self.currentversion = PageVersion(self, 1)

    def addVersion(self):
        self.currentversion = PageVersion(self, self.currentversion.version+1)
        return self.currentversion

mapper(Page, pages, properties={
    'job': relation(Job, backref=backref('pages', cascade="all,
delete-orphan")),
    'currentversion': relation(PageVersion,
                    foreignkey=pages.c.current_version,
                    primaryjoin=and_(pages.c.jobno==pageversions.c.jobno,
                                     pages.c.pagename==pageversions.c.pagename,

pages.c.current_version==pageversions.c.version),
                    post_update=True),
    'versions': relation(PageVersion, cascade="all, delete-orphan",
                    order_by=pageversions.c.version, backref='page', lazy=False)
})


The problem is that if I create Job instances before ever referencing
Page, they have no "pages" property, since it's declared in the Page
mapper.

The solution would obviously be to compile my mappers manually - but
is there a way to turn of this deferred mapper compilation behaviour?

Arnar


_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to