0

希望可以有人帮帮我。

我有一个带有 Django 和美味派的堆栈(我使用 apikey 来验证和授权用户)。让我解释一下我想要做什么。

我有几个用户只能访问他们的数据,所以想象一个用户通过一个 rest 服务访问模型 requestoffer 的所有行,如下所示。

http://127.0.0.1:8001/api/v1/requestoffer/?format=json&username=door1&api_key=84051c6fd1581ad60ffa96bcf5a50d3fc11ccdd3

但我不希望该用户访问所有请求提供,我只希望他访问他是“专有”的那些。

你知道如何用 Django 或 Tastypie 做到这一点吗?

我说清楚了吗?

4

2 回答 2

0

如果每一行都属于一个特定用户,那么您可以将其作为外键添加到 requestoffer 并过滤用户的查询集。另一种方法是扩展 Authorization 类并实现 apply_limits。

class MyAuthorization(DjangoAuthorization):
    def apply_limits(self, request, object_list):
        if request and hasattr(request, 'user'):
            return object_list.filter(requestoffer__user=request.user.id)

        return object_list.none()
于 2013-02-19T22:19:05.590 回答
0

有很多方法可以实现权限管理。哪一个适合您的需求完全取决于您。实现此目的的一种方法可能是与相关模型创建“所有权”关系,然后为该模型创建一个管理器,仅根据请求返回记录。模型管理器的文档非常简单(而且优雅)。

要自动化记录所有权,您可以创建一个 CurrentUserField,如Pro Django中所述,还有多种方法可以实现它。所以长话短说,你应该通过反复试验来学习。

于 2013-02-19T22:22:25.213 回答