Hi,

I have a problem with an adjacency list table, my knowledge of DB
design is flakey at best so please bear with me in terminology and my
attempt at an explanation.

I have a table/class/mapping as follows (the DB is sqlite3):

invoices_table = Table('invoices', metadata,
    Column('id', Integer, primary_key=True),
    Column('active', Boolean),
    Column('invoice_no', Integer),
    Column('project_id', Integer, ForeignKey('projects.id')),
    Column('invoice_id', Integer, ForeignKey('invoices.id')),
    Column('name',String),
    Column('creation_date',DateTime),
    Column('due_date',DateTime),
    Column('invoiced', Boolean),
    Column('invoiced_date',DateTime),
    Column('invoice_paid',Boolean),
    Column('invoice_paid_date',DateTime),
    Column('invoice_split',Boolean),
    Column('invoice_split_amount', Numeric),
    Column('override_day_rate',Boolean),
    Column('day_rate', Integer),
    Column('is_quote',Boolean),
    Column('quote_no', Integer),
    Column('ballpark',Boolean),
    Column('user_id', String, ForeignKey('users.id')),
    Column('payment_schedule',String)
)

class ArkInvoice(object):
    def __init__(self):
        self.creation_date=datetime.datetime.now()
        self.invoice_split=False
        self.is_quote=True
        self.active=True
        self.invoiced_date=datetime.datetime(0001,01,01)
        self.ballpark=False
        self.invoice_no=None

mapper(ArkInvoice, invoices_table, properties={
    'entries': relation(ArkInvoiceEntry,
secondary=invoice_entries_primary_table, backref='invoice',
cascade="all, delete, delete-orphan"),
    'user': relation(ArkUsers, backref='user'),
    'child_invoices':relation(ArkInvoice,
                              backref=backref('parent_invoice',
remote_side=[invoices_table.c.id]),
                              cascade="all",
                              lazy=False,
                              join_depth=3)
})

The idea behind this is that invoices can have a hierarchy, and some
invoices are effectively parented under a parent invoice. This
parenting only ever needs to be one level deep.

The problem I'm having is child_invoices works fine for the parent
ArkInvoice object, however none of the children seem to receive a
backref, in so much as type(invoiceObject.parent_invoice) is a
'NoneType', yet I would expect it to return the parent arkInvoice
obhject.

I've pulled most of the above code from the sqlalchemy example on
Adjacency tables [http://www.sqlalchemy.org/docs/05/
mappers.html#adjacency-list-relationships], and can't see what I've
done wrong. Any pointers on this are much appreciated.

Many thanks,

Jules

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to