如何在Tastypie中代表独特

时间:2013-02-11 18:58:28

标签: django tastypie

我有一个模型结构,可以跟踪用户的关注者和关注者。

class Connections(models.Model):
    following = models.ForeignKey(
        User, related_name='following'
    )
    followers = models.ForeignKey(
        User, related_name='followers'
    )
    class Meta:
        unique_together = (('following', 'followers'), )

发布模型

class Post(models.Model):
     body = models.TextField()
     user = models.ForeignKey(User)
     #media = models.ForeignKey(postMedia)
     post_image = models.ImageField(upload_to=get_postimage_path)
     type_of_post = models.CharField(max_length=20)
     def __unicode__(self):
      return u'%s, %s' % (self.user.username, self.body)

class Sharedpost(models.Model):
    post = models.ForeignKey(post, unique=True)
    date = models.DateTimeField(auto_now_add=True)
    favors = models.IntegerField(default=1)
    users_favored = models.ManyToManyField(User, related_name='users_favored')
    notify_users = models.ManyToManyField(User, related_name='notify_users')
    def __unicode__(self):
        return u'%s, %s, %s' % (self.post.user.username, self.post.body, self.pk)

现在,如果我必须为用户提取以下内容,我会在我的视图中执行类似的操作

following = [connections.followers for connections in user.following.all()]

现在我正在尝试使用Tasypie为我的Web应用程序设计API,我不知道如何在我的ModelResources中表示这种关系。

我想生成一个关注者列表并在其中跟随,然后将其用作我的过滤器,以提取用户所关注的所有帖子。

curl http://localhost:8000/api/v1/sharedpost/?post__user__username=abc

我正在使用这个来过滤掉特定用户发布的所有帖子,但我想为所有以下用户提供过滤器。

我可以使用

def get_object_list(self, request):
            return super(SharedPostResource, self).get_object_list(request).filter(post__user=request.user)

然后

def get_object_list(self, request):
   user=request.user
   following = [connections.followers for connections in user.following.all()]
   return super(SharedPostResource,self).get_object_list(request).filter(post__user__in=following).order_by('-date')

但是我不能为所有这些制作不同的资源吗? 还有比这更好的方法吗?也许我可以让一个资源更加多样化?

0 个答案:

没有答案