2012-12-18 33 views
0

使用Tastypie和Django用户流,我试图构建一个活动源。我已经成功地构建了功能下面加入最爱:如何检索在Tastypie中创建的对象

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/

回答

1

试试这个为:

bundle.data['user'] = Journalist.objects.get(user = bundle.obj.user) 

bundle.obj会给你Comment模型对象。您可以通过bundle.obj.user获取用户。

+0

谢谢你回答Ahsan – noahandthewhale

+1

我很高兴它可以帮助你。 – Ahsan

相关问题