Django的相对查询集



模型:

class Project(models.Model):
    creator = models.ForeignKey(User)
    name = models.CharField(max_length=64)
    def __unicode__ (self):
        return self.name

现在我想通过REST/tastype获取用户项目。我通过这样的教程制作了资源类:

class ProjectResource(ModelResource):
    class Meta:
        queryset = Project.objects.all()
        resource_name = 'project'

但是这段代码返回所有数据给每个用户。

我知道如何添加身份验证,但我不明白如何返回不是所有的项目,而是这个数据的一些子集,基于登录的用户id。

可以覆盖get_object_list

class ProjectResource(ModelResource):
    class Meta:
        queryset = Project.objects.all()
        resource_name = 'project'
    def get_object_list(self, request):
        qs = super().get_object_list(request)
        return qs.filter(creator=request.user)
    def authorized_read_list(self, object_list, bundle):
        return object_list.filter(creator=bundle.request.user.id)

最新更新