旧版Stream-Framework创建用户Activity时出现AttributeError如何解决
问题原因
报错AttributeError: 'int' object has no attribute 'id'是因为Activity类构造时传入的verb参数不能直接使用整数id,框架要求verb必须是Verb基类的子类对象,内部会读取该对象的id属性做序列化校验。
解决步骤
- 首先自定义并注册你的Pin操作对应的Verb类:
from stream_framework.activity import Activity from stream_framework.feeds.redis import RedisFeed from stream_framework.verbs import register from stream_framework.verbs.base import Verb # 自定义Pin操作Verb class PinVerb(Verb): id = 1 past_tense = 'pinned' present_tense = 'pin' # 注册到框架全局Verb列表 register(PinVerb) # 原有Feed定义无需调整 class PinFeed(RedisFeed): key_format = 'feed:normal:%(user_id)s' class UserPinFeed(PinFeed): key_format = 'feed:user:%(user_id)s'
- 替换Activity构造时的verb参数为你定义的
PinVerb类即可:
feed = UserPinFeed(13) activity = Activity( actor=13, verb=PinVerb, object=1, ) feed.add(activity)
运行以上代码即可正常添加activity到feed。
补充说明:旧版官方文档示例默认省略了Verb注册的前置步骤,才会导致按照文档操作出现报错。
内容的提问来源于stack exchange,提问作者Saad
相关产品推荐
相关产品推荐

