are metadatas same? On Tuesday 24 June 2008 19:45:46 Matt Haggard wrote: > In my various models, I recently noticed that I have been reusing > my customer table as it relates to many other models. I've been > making CustomerPart objects in each of the model files and retyping > the table schema and object (only including the pieces I need for > that particular case) > > Now I'd like to have one customer model and let the other models > access it -- rather than continually retyping everything. > > But I get this error when I break it out (this is when I try to use > it in a controller in pylons): > raise exceptions.InvalidRequestError("Could not find table '%s' > with which to generate a foreign key" % tname) > InvalidRequestError: Could not find table 'customer' with which to > generate a foreign key > > I've included a before and after (hooray for GIT) of the models: > > Thanks! > > Matt > > > > saq.py before (this one works) > ---------------------------------------------------- > from sqlalchemy import Column, MetaData, Table, types, ForeignKey, > func > from sqlalchemy.orm import mapper, relation > > from datetime import datetime > > from formencode import validators > from smmodels import fe_obj, NoHTML, SuperDateValidator, fe_setter > > metadata = MetaData() > > ... > > customer_table_part = Table('customer', metadata, > Column('id', types.Integer, primary_key=True, index=True), > Column('email', types.Unicode, unique=True, index=True), > Column('validation_type', types.Unicode), > ) > > questionnaire_table = Table('saq_questionnaire', metadata, > ... > Column('customer_id', types.Integer, ForeignKey('customer.id'), > index=True), > ... > ) > > questions_table = Table('saq_questions_new', metadata, > ... > ) > > > class Questionnaire(fe_setter): > > def __str__(self): > return 'id: %s customer_id: %s' % (self.id, > self.customer_id) > > def __repr__(self): > return "<Questionnaire(%s, customer_id:%s)>" % (self.id, > self.customer_id) > > > class Question(fe_setter): > pass > > > class CustomerPart(fe_setter): > > def __init__(self): > pass > > > mapper(Question, questions_table) > mapper(CustomerPart, customer_table_part) > mapper(Questionnaire, questionnaire_table, properties={ > ... > 'customer' :relation(CustomerPart, backref='questionnaires') > }) > > > > > > saq.py after (all the same except removed references to > CustomerPart ---------------------------------------------------- > ... > from smmodels.customer import customer_table, Customer > ... > > mapper(Question, questions_table) > mapper(Questionnaire, questionnaire_table, properties={ > ... > 'customer' :relation(Customer, backref='questionnaires') > }) > > > customer.py after (newly created) > ---------------------------------------------------- > from sqlalchemy import Column, MetaData, Table, types, ForeignKey > from sqlalchemy.orm import mapper, relation > > from formencode import validators > from smmodels import fe_obj, NoHTML, fe_setter > > from datetime import date > > metadata = MetaData() > > customer_table = Table('customer', metadata, > Column('id', types.Integer, primary_key=True, index=True), > Column('email', types.Unicode, unique=True, index=True), > Column('validation_type', types.Unicode), > ) > > class Customer(object): > > def __init__(self): > pass > > mapper(Customer, customer_table) >
--~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---