使用Tastypie和Django用户流,我正在尝试构建一个活动源。我已成功构建了下面的收藏功能:
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用户流实现它,以便在我的Feed中,它说“User1评论了你的镜头:看起来不错!” ???
Django用户流:https://github.com/dabapps/django-user-streams Tastypie:http://django-tastypie.readthedocs.org/en/latest/
答案 0 :(得分:1)
试试这个:
bundle.data['user'] = Journalist.objects.get(user = bundle.obj.user)
bundle.obj
将为您提供Comment
模型对象。您可以通过bundle.obj.user
获取用户。