On May 22, 2014, at 7:42 AM, Pavel Aborilov <abori...@gmail.com> wrote:
> Hi! > How can I set default for parent field? > > class DB_Object(Base): > __tablename__ = 'objects' > id = Column(Integer, primary_key=True) > name = Column(String(50), unique=True, nullable=False) > type = Column(String(50)) > __mapper_args__ = { 'polymorphic_identity': 'object', 'polymorphic_on': > type } > > class Command(DB_Object): > __tablename__ = "commands" > id = Column(Integer, ForeignKey('objects.id'), primary_key=True) > name = Column(String(50), default="Command") > > If I try to commit Command object > I have "objects.name may not be NULL" This is all assuming that "name" is the same value on both DB_Object and on Command. Since Command extends from DB_Object, you'd want to remove the "name "column from the "commands" table - it is redundant vs. the "name" column that's on "objects". Alternatively, you can map both "name" columns on Command as follows: class Command(DB_Object): # ... name = column_property(Column(String(50), default="Command"), DB_Object.name) However, in either case, you will also need to establish that "default" value in the constructor (or in the init event, see http://docs.sqlalchemy.org/en/latest/orm/events.html?highlight=init%20event#sqlalchemy.orm.events.InstanceEvents.init) , so that it applies to both "name" columns during flush: class Command(DB_Object): # ... def __init__(self, **kw): kw.setdefault("name", "Command") super(Command, self).__init__(**kw) > > -- > 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. -- 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.