sqlalchemy - Pylons + SQLA: One to One Relationship -
newbie question. pylons 1 + sqla using declarative style. new python.
i have "master" class called entity, "child" classes must belong them valid. link master class on child object level. issue can't seem figure out how 1 creates child object , create master object create link between objects. make use of relations linking.
thus create ono on 1 link below: entity 1 - client 1 entity 2 - client 2 entity 3 - producer 1 entity 4 - producer 2 etc.
the code might explain better.
class entity(base): __tablename__ = "entities" # primary key entity_id = column(integer, primary_key=true) # data fields name = column(unicode(255), nullable=false) def __init__(self, name, description): self.name = name def __unicode__(self): return self.name __str__ = __unicode__ class client(base): __tablename__ = "clients" client_id = column(integer, primary_key=true) # data fields name = column(unicodetext(255), nullable=false, unique=true) # entity link entity_id = column(integer, foreignkey('entities.entity_id')) # mapper entity = relation('entity') def __init__(self, name): self.name = name def __unicode__(self): return self.name __str__ = __unicode__
in controller try create new client , append entity, fails miserably. please code below.
client_entity = model.entity(name=client_name, description=client_name + " added") client = model.client(name=client_name) client.entity.append(client_entity) session.add(client) session.commit()
now according me should possible , hope can @ wits end.
does make sense?
class entity(base): __tablename__ = "entities" # primary key entity_id = column(integer, primary_key=true) # data fields name = column(unicode(255), nullable=false) def __init__(self, name, description): self.name = name def __unicode__(self): return self.name __str__ = __unicode__ class client(base): __tablename__ = "clients" client_id = column(integer, primary_key=true) name = column(unicodetext()) entity_id = column(integer, foreignkey('entities.entity_id')) # mapper entity = relation('entity', uselist=false, backref='clients') def __init__(self, name): self.name = name def __unicode__(self): return self.name __str__ = __unicode__ client_name="clientname" entitiy_name="entityname" client = client(name=client_name) client.entity=entity(name=entitiy_name, description=entitiy_name + " added")
i think "uselist=false" useful if use onetoone.
Comments
Post a Comment