I don't know what "@validates hangs a marker of the method that
mapper() uses when it instruments the class" means. I guess my
question now becomes: How do I add the event.listens_for descriptor to
the class, since i do not have a class declaration in the traditional
sense?



On Apr 15, 4:29 pm, Michael Bayer <mike...@zzzcomputing.com> wrote:
> @validates hangs a marker of the method that mapper() uses when it 
> instruments the class, so if the class is already mapped then that train has 
> left the station.   Taking a cab instead, you can just add the attribute 
> event directly:
>
> @event.listens_for(Positive.value, "set")
> def checkvalue(target, value, oldvalue, initiator)
>    assert value > 0
>
> if you want to return a new, mutated value then add retval=True to 
> listens_for().
>
> On Apr 15, 2012, at 8:22 AM, lars van gemerden wrote:
>
>
>
>
>
>
>
> > Hi,
>
> > I need a way to dynamically add a validates method to a already
> > created sqla class.
>
> > In a normal class declaration you can add a validator by:
>
> > class Positive(Base):
> >    __tablename__ = "positives"
> >    value = Column(Integer)
>
> >    def checkvalue(self, name, value):
> >        assert value > 0
> >        return value
> >    validates("value")(checkvalue)
>
> > However if you get the class dynamically:
>
> > Positive = type("Positive", (Base,), dict(__tablename__ =
> > "positives",  value = Column(Integer)))
>
> > I can't figure out how to add the validator, either in the type() call
> > or afterwards.
>
> > Cheers, Lars
>
> > --
> > 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 
> > sqlalchemy+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/sqlalchemy?hl=en.

-- 
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 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to