如何在web2py中使用_after_update获取受影响行的ID?

时间:2013-11-05 16:35:46

标签: web2py

我有一个表结构,例如:

entity
entity_like

其中entity_like包含有关该实体的用户喜欢。为了避免每次查看实体时都要计算总喜欢,我正在缓存entity表中的总喜欢。现在每当插入或更新新的entity_like时,我想更新缓存。

我的想法是使用_after_insert_after_update来计算新的缓存总数并将其存储在实体对象中。

这是_after_insert直截了当,因为您提供了插入记录的ID。但是使用_after_update时,不会提供ID。如何从_after_update中获取更新记录的ID?

1 个答案:

答案 0 :(得分:2)

_after_update回调采用DAL Set对象,该对象用于标识要更新的记录。因此,您可以在Set上执行.select()以获取更新的记录(包括其ID):

def after_el_update(s, fields):
    ids = [r.id for r in s.select()]
    ...