Tastypie と Django User Streams を使用して、アクティビティ フィードを構築しようとしています。以下のお気に入り機能を正常に構築しました。
class LikeResource(ModelResource):
user = fields.ForeignKey(BasicUserResource, 'user', full=True)
class Meta:
queryset = Journalist.objects.all()
allowed_methods = ['get', 'put']
resource_name = 'like'
fields = ['user']
default_format = "application/json"
authorization = Authorization()
authentication = BasicAuthentication()
serializer = Serializer(formats=['json'])
always_return_data = True
include_resource_uri = False
def hydrate(self, bundle):
shot = LifeShot.objects.all().get(id = bundle.data['post id'])
if(bundle.obj.likes.filter(id = bundle.data['post id']).exists()):
bundle.obj.likes.remove(shot)
else:
bundle.obj.likes.add(shot)
user_doing_the_liking=User.objects.get(username=bundle.request.user.username)
user_getting_liked = shot.journalist.user
user_streams.add_stream_item(user_getting_liked, '%s liked your shot %s %s' % (bundle.request.user.username, shot.url, datetime.datetime.utcnow()))
return bundle
def dehydrate(self, bundle):
shot = LifeShot.objects.all().get(id = bundle.data ['post id'])
user_getting_liked = shot.foodie.user
likeitems = user_streams.get_stream_items(user_getting_liked)
list = ''
for likeitem in likeitems:
list = list + likeitem.content +', '
bundle.data['likestream'] = list
return bundle
写真にコメントするために、これは私がこれまでに持っているものです:
class CommentEntryResource(ModelResource):
user = fields.ForeignKey(BasicJournalistResource, 'user', full =True)
picture = fields.ForeignKey(BasicLifeShotResource, 'picture', full=True)
class Meta:
queryset = Comment.objects.all()
allowed_methods = ['post', 'get','put']
resource_name = 'comment'
fields = ['comment', 'picture', 'user']
authorization = Authorization()
authentication = BasicAuthentication()
serializer = Serializer(formats=['json'])
include_resource_uri = False
always_return_data = True
filtering = {
'picture': ALL_WITH_RELATIONS,
}
def hydrate_user(self, bundle):
bundle.data['user'] = Journalist.objects.get(user = bundle.request.user)
return bundle
ここでの唯一の違いは、Tastypie が新しいコメント オブジェクトを作成したことです。そのコメント オブジェクトを取得し、それを Django ユーザー ストリームで実装して、フィードで「User1 があなたのショットにコメントしました: いいね!」と表示されるようにするにはどうすればよいですか? ???
Django ユーザー ストリーム: https://github.com/dabapps/django-user-streams Tastypie: http://django-tastypie.readthedocs.org/en/latest/