sure it's just a setter, it seems like you are passing "start_time_local" to 
your constructor, the ORM does not automatically add hybrid properties to the 
constructor so you would need to imlpement the __init__ method manually.

On Fri, Oct 1, 2021, at 5:04 PM, niuji...@gmail.com wrote:
> 
> Hi Mike,
> 
> Instead of this:
> 
> class Entity:
>    def set_timestamp(self, timestamp, timezone):
>        # ...
> 
> which you have to manually call it to set, I'd like to have an automated 
> setting directly on initiation, so that I can create new records in a more 
> uniformed ways:
> Entity(**params_from_web_form)
> 
> 
> Now I just tried using @hybrid_property.setter:
> class Tutorsession(Base):
>   ...
>   @start_time_local.setter
>   def start_time_local(self, value):
>       timezone_stamp = 
> json.loads(cherrypy.request.body.read())['timezone_stamp']
>       self.start_time = create_timestamp(value, timezone_stamp)
> 
> 
> 
> unfortunately it gives me an error:
> 
> TypeError: 'start_time_local' is an invalid keyword argument for Turtorsession
> 
> 
> 
> 
> Is hybrid_property.setter allowed to create new records like this way at all?
> On Saturday, September 4, 2021 at 7:43:24 AM UTC-7 Mike Bayer wrote:
>> 
>> 
>> On Fri, Sep 3, 2021, at 4:07 PM, niuji...@gmail.com wrote:
>>> In the official documentation it says:
>>> 
>>> 
>>> *validates* 
>>> <https://docs.sqlalchemy.org/en/13/orm/mapped_attributes.html#sqlalchemy.orm.validates>(*names,
>>>  **kw)
>>> 
>>> 
>>> Decorate a method as a ‘validator’ for one or more named properties.
>>> 
>>> 
>>> 
>>> 
>>> 
>>> I need to validate two incoming *-**attributes at the same time,  for 
>>> example:
>>> 
>>> 
>>> 
>>> class Entity(Base):
>>> 
>>>     ....
>>> 
>>>     attr_timezone = Column(String)
>>> 
>>>     attr_timestamp = Column(MyTimeStamp)
>>> 
>>> 
>>> 
>>> When taking incoming arguments, `attr_timezone` as a string need to be 
>>> first validated and converted to timezone instance before being attached to 
>>> my custom class `MyTimeStamp`. Can `validates` do this?
>>> 
>> 
>> its not a simple yes or no because the use case does not totally make sense.
>> 
>> what happens if someone does this:
>> 
>> some_entity().attr_timestamp = <some timestmap>
>> 
>> and then nothing else?  what do you want to happen when that attribute set 
>> occurs?
>> 
>> 
>> what you probably want to do is require that one or the other attribute is 
>> set first.   you can certainly use @validates to set this up, it's just an 
>> event hook.
>> 
>> more realistically though in the most practical sense, you'd want to have a 
>> method that clearly documents what needs to be done:
>> 
>> class Entity:
>>    def set_timestamp(self, timestamp, timezone):
>>        # ...
>> 
>> 
>> then make "attr_timestamp" and "attr_timezone" private.     This is boring 
>> and not magical but if I were in a large organization where we just need it 
>> to be clear and unambigious, this is how I'd do it.
>> 
>> 
>> 
>> 
>> 
>>> 
>>> 
>>> -- 
>>> 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 sqlalchemy+...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/sqlalchemy/ee2abfce-6a5a-4d43-b508-f86be3ea8cd5n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/sqlalchemy/ee2abfce-6a5a-4d43-b508-f86be3ea8cd5n%40googlegroups.com?utm_medium=email&utm_source=footer>.
>> 
> 
> 
> -- 
> 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 sqlalchemy+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/65671e2f-094a-427a-89a4-2678c9e6125en%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/65671e2f-094a-427a-89a4-2678c9e6125en%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
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 sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/e68e53e4-853c-4c42-9528-d961b10efb21%40www.fastmail.com.

Reply via email to