首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Pynamodb保存对象创建日期时间

使用Pynamodb保存对象创建日期时间
EN

Stack Overflow用户
提问于 2021-08-12 06:45:09
回答 1查看 365关注 0票数 0

我只想在创建新对象时更新creation_datetime,并在每次更新时使用save方法更新last_update_datetime。即使在现有对象正在更新时,default_for_new也在更新时间。有其他选择吗?

下面是我尝试过的示例代码

代码语言:javascript
复制
from pynamodb.models import Model
from pynamodb.attributes import  UTCDateTimeAttribute

def current_datetime():
    from datetime import datetime
    return datetime.now()


class AbstractDateTimeModel(Model):
    creation_datetime = UTCDateTimeAttribute(default_for_new=current_datetime)
    last_update_datetime = UTCDateTimeAttribute(default=current_datetime)

    class Meta(object):
        abstract = True
EN

回答 1

Stack Overflow用户

发布于 2022-08-03 03:15:27

最好的方法是重写对象类的update方法。这就是一个例子:

代码语言:javascript
复制
from datetime import datetime, timezone

from pynamodb.models import Model
from pynamodb.settings import OperationSettings
from pynamodb.attributes import UTCDateTimeAttribute, UnicodeAttribute, NumberAttribute


def get_current_time_utc():
        return datetime.now(timezone.utc)


class SalesItem(Model):
    class Meta:
        table_name = 'monthlySales'

    id = UnicodeAttribute(hash_key=True)
    month= UnicodeAttribute()
    sales= NumberAttribute()
    createDateTime = UTCDateTimeAttribute(default_for_new=get_current_time_utc)
    updateDateTime = UTCDateTimeAttribute(default_for_new=get_current_time_utc)


    # overriding the method to add timestamp on update
    def update(self, actions=[], condition=None, settings=OperationSettings.default):
        actions.append(SalesItem.updateDateTime.set(get_current_time_utc()))
        Model.update(self, actions, condition, settings)

我们只需要将一个操作附加到操作列表中,询问时间戳更新。然后调用父级的更新方法。现在,您可以忘记时间戳,并按照需要使用update方法。

代码语言:javascript
复制
item = SalesItem.get('pynamodb-test')
# do your updates here
item.update(actions=[
    SalesItem.sales.set(item.sales + 1)
])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68752783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档