使用postgresql触发器为django用户创建徽章
django-pg-badges的Python项目详细描述
用户在满足某些定义的条件时可获得徽章 在badge.json文件中
然后创建一个徽章对象(数据库模型),将用户链接到徽章。
条件
条件是为授予徽章而进行的SQL检查。
如果设置触发条件,则可以访问变量new “更新”或“插入”。这是更新或插入后的数据库对象。
如果设置触发条件,则可以访问变量old “更新”或“删除”。这是更新或删除后的数据库对象。
触发器
我们希望一有条件就给徽章。即使 事件来自django应用程序之外的事件。
我们不想依赖芹菜定期检查徽章
- 太频繁:这是一个性能bootleneck
- 太晚了:让用户恼火
当“某物”改变时,检查每个徽章的支票。
要创建负责获得徽章运行的数据库触发器:
>>> python manage.py create_badge_triggers
更改badge.json(添加、更新或删除徽章)时,请运行此命令以反映数据库中的这些更改。
badge.json示例
` [{"name": "Pionner", "code": "pionner", "condition": "age(NEW.date_joined) > interval '1 year'", "trigger_condition": "update", "trigger_table": "auth_user", "user_field": "id" }, {"name": "Collector", "code": "collector" "condition": "count(id) >= 5 from dummy_sketch where user_id = NEW.user_id", "trigger_condition": "insert", "trigger_table": "dummy_sketch", "user_field": "user_id" }, {"name": "Star", "code": "star", "condition": "hit_views > 1000 ", "trigger_condition": "update", "trigger_table": "dummy_sketch", "user_field": "user_id" }] `name是徽章的名称,它将显示在前面或API中。
代码是徽章的唯一代码名
condition是将发出的查询,以检查徽章是否 应该获得
触发故障告知何时必须进行检查。其中一个插入, 更新或删除
安装
有关说明,请参见安装文件。