我有一个表结构,例如:
entity
entity_like
其中entity_like
包含有关该实体的用户喜欢。为了避免每次查看实体时都要计算总喜欢,我正在缓存entity
表中的总喜欢。现在每当插入或更新新的entity_like时,我想更新缓存。
我的想法是使用_after_insert
和_after_update
来计算新的缓存总数并将其存储在实体对象中。
这是_after_insert
直截了当,因为您提供了插入记录的ID。但是使用_after_update
时,不会提供ID。如何从_after_update
中获取更新记录的ID?
答案 0 :(得分:2)
_after_update
回调采用DAL Set
对象,该对象用于标识要更新的记录。因此,您可以在Set上执行.select()
以获取更新的记录(包括其ID):
def after_el_update(s, fields):
ids = [r.id for r in s.select()]
...