On Sun, Jul 1, 2018 at 9:15 AM, Marcus Mann <[email protected]> wrote:
> So not a property of the column necessarily, but rather the actual value of
> the column. Like if there is a column that stores the Name of the Item,
> there would be a "Name" column. I would like to change it so when you make
> an A() object, it uses the default value of "A" in the "Name" column, and
> when you create a 'B' object, it uses the default value of "B" in the "Name"
> Column.
class specific defaults at the ORM level are most easily set up just
by treating the class like any other:
class A(Base):
__tablename__ = ...
col1 = Column(..)
col2 = Column(...)
def __init__(self, **kw):
kw.setdefault("col2", "this is an A")
super(A, self).__init__(**kw)
class B(A):
def __init__(self, **kw):
kw.setdefault("col2", "this is a B")
super(B, self).__init__(**kw)
if using __init__ feels wrong, there's also an init event, which I
would advise setting only on the base class as it's not easy to have
multiple listeners fire off in an exact ordering
(http://docs.sqlalchemy.org/en/latest/orm/events.html?highlight=instanceevents%20init#sqlalchemy.orm.events.InstanceEvents.init):
from sqlalchemy import event
class A(Base):
__tablename__ = ...
col1 = Column(..)
col2 = Column(...)
col2_default = "This is an A"
class B(A):
col2_default = "this is a B"
@event.listens_for(A, 'init', propagate=True)
def _init_a(target, args, kwargs):
kwargs.setdefault("col2", target.col2_default)
>
> --
> SQLAlchemy -
> The Python SQL Toolkit and Object Relational Mapper
>
> http://www.sqlalchemy.org/
>
> To post example code, please provide an MCVE: Minimal, Complete, and
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full
> description.
> ---
> 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 [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
--
SQLAlchemy -
The Python SQL Toolkit and Object Relational Mapper
http://www.sqlalchemy.org/
To post example code, please provide an MCVE: Minimal, Complete, and Verifiable
Example. See http://stackoverflow.com/help/mcve for a full description.
---
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.