On 5/8/15 2:41 PM, Carlus wrote:
Hello,
Sorry I couldnt find info about in google neither in the documentation,
I have a model structure like this one:

class Person(Base):
     __tablename__ ='person' id = Column(Integer, primary_key=True, 
nullable=False)
     person_name = Column(String, nullable=False)

     accommodation_id = Column(Integer, ForeignKey("accommodation.id"))
     accommodation = relationship("Accommodation", backref="people")

     def __init__(self, person_name):
         self.person_name = person_name


class Accommodation(Base):
     __tablename__ ='accommodation' __mapper_args__ = 
{'polymorphic_identity':'accommodation', 
'polymorphic_on':'accommodation_type'}id = Column(Integer, primary_key=True)
     accommodation_type = Column(String(32))
     address = Column(String)


class Hotel(Accommodation):
     __tablename__ ='hotel' __mapper_args__ = {'polymorphic_identity':'hotel' 
}id = Column(Integer, ForeignKey('accommodation.id'), primary_key=True)
     hotel_name = Column(String)

     def __init__(self, name, address):
         self.hotel_name = name
         self.address = address

class Apartment(Accommodation):
     __tablename__ ='apartment' __mapper_args__ = 
{'polymorphic_identity':'apartment' }id = Column(Integer, 
ForeignKey('accommodation.id'), primary_key=True)
     apartm_name = Column(String)

     def __init__(self, name, address):
         self.apartm_name = name
         self.address = address

Where each Person is associate to some accommodation (thanks to polymorphic can be Hotel or Apartment), each accommodation can have more than one Person.

Im having problems when I try to update some record in the table accommodation, mainly when for example updating the accomodation_type (an Apartment became into a Hotel, where would get new records in Hotel and would delete any info from the record in Apartment and keeping the same id, address, and relationship with People.
I'm not sure what angle you are coming from. Did you want to emit an UPDATE for accomodation_type? That would be awkward; it means a Hotel vanishes and becomes an Apartment.

Do you mean, you just want to take a Person, associated with some Hotel, and move that Person to an Apartment? That would just be an UPDATE of Person.accomodation_id. Just change the Person.accommodation attribute to the parent record you want.

Not sure what you mean. You'd need to illustrate what rows you are looking to modify for me to understand which one you are getting at.







--
You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com <mailto:sqlalchemy+unsubscr...@googlegroups.com>. To post to this group, send email to sqlalchemy@googlegroups.com <mailto:sqlalchemy@googlegroups.com>.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to