问题标签 [drf-queryset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6036 浏览

python - APIView的POST方法中的Django Rest Framework验证

我是 DRF 的新手,正在尝试构建一个 rest api,我需要为任务执行创建一个 api,而不仅仅是为 CRUD,这就是为什么我将 APIView 的 POST 方法覆盖为:

模型.py:

序列化程序.py:

网址.py:

错误返回:

AttributeError:“str”对象没有属性“values”

更新:完整追溯

但我不知道如何验证请求?当我覆盖 APIView 的 POST 方法时。

发布数据:

}

0 投票
1 回答
1653 浏览

django - DRF ViewSet 返回空值的 QuerySet

我有一个名为“QueryCriteriaViewSet”的 DRF ViewSet,我在查询构建器中使用它,它允许用户选择一个字段,然后从相关条件中进行选择。因此,例如,用户可以选择“reg_status”字段,然后从“Active”和“Inactive”的相关标准中进行选择。

当我从主要的“人”模型中选择一个字段时,这完全正常。但是当我从“lookup_party”模型等相关模型中选择一个字段时,我遇到了问题。奇怪的是,当我将查询集打印到控制台时,它工作得很好,但是当我调用 API 时,它返回一个空对象列表。

再举一个例子,以下是我拨打电话时发生的情况:

api/querycriteria/?fields=reg_status返回:

api/querycriteria/?fields=party__party_name返回:

即使我print(queryset)在返回查询集之前,也会打印以下内容:

这是完整的视图集:

让我知道是否有任何其他信息会有所帮助。

这是我的序列化程序:

这是 DynamicFieldsModelSerializer:

0 投票
1 回答
65 浏览

django - 如何确保用户只能访问/更新他们创建的数据

我希望创建一个 API,允许用户访问/更新仅由他们上传的书籍的详细信息。用户不应有权访问/更新由其他人创建的图书。

这是我的models.py

这是我的serializers.py

这是我的views.py

如何修改views.py用户只能访问/更新他创建的书籍?

0 投票
2 回答
1970 浏览

python - 基于 JSONField 嵌套对象的 Django Rest Framework 过滤器

我正在使用 Python(3)、Django(1.11) 和 DRF 开发一个项目,在该项目中,我必须根据json保存为JSONFIELDdb 模型的对象字段过滤数据。

这是我尝试过的:

它应该返回 MyModel 记录,props ID并且应该能够通过 GET 请求返回所有MyModel objects位置的 JSON 数组。如果请求的不存在,则 HTTP 响应代码应为 404,否则,响应代码应为 200。 JSON 数组应按 MyModel ID 升序排序。props ID/mymodel/props/<ID>props

当我向这个视图发送请求时,它返回一个错误:

那么,如何根据 ? 过滤对象id of props

请帮帮我!提前致谢!

0 投票
1 回答
1036 浏览

python - Django Rest Framework - 通过传递 JSON 对象而不仅仅是 ID 来执行 Put 请求

我正在使用 Python(3)、Django(1.11) 和 DRF(3.6) 开发一个项目,其中我必须PUT通过传递 anested nested而不是ID.

这是我尝试过的:

models.py

serializers.py

更新:当我提交带有以下对象的发布请求时:

它将此错误返回为:TypeError: 'ValueError: Cannot assign "OrderedDict([('id', '2790311'), ('login', 'daniel33'), ('avatar_url', 'https://avatars.com/2790311')])": "Event.actor" must be a "Actor" instance.

views.py

Sample Input Object

要求是: 更新 avatar URLactor:服务应该能够通过 PUT 请求更新 actor 的 avatar URL /actors。演员 JSON 在请求正文中发送。如果具有 id 的参与者不存在,则响应代码应该是404,或者如果有其他字段正在为参与者更新,那么 HTTP 响应代码应该是400,否则,响应代码应该是200。**

我对如何在PUT不通过ID?

0 投票
0 回答
441 浏览

python - DRF - CreateAPIView 嵌套序列化程序

我有一个有趣的问题,希望得到专家的意见。

我有以下型号。

以下是我的序列化程序:

我的观点:-

一切都按预期工作。请求和响应正常工作。

但是,触发的查询不是预期的方式。在返回数据时,DRF 会触发 3 个额外的查询来过滤 B、C 和 D,从而忽略查询集。

1) 如何让 DRF 触发一个 JOIN 查询?

0 投票
3 回答
1079 浏览

python - 键入错误以在 django rest 框架中创建和更新我的列表

我正在尝试使用我的 api 来创建和更新捆绑包中的产品。我这样做了:

模型.py

这是我的serializers.py:

我的视图集.py

当我尝试在 bundleproducts 中发布一些产品时,我收到“类型不正确。预期的 pk 值,收到的列表。”

阅读此错误后,我发现了一些与 PrimaryKeyRelatedField 和 SlugRelatedField 相关的问题。我知道我需要覆盖,但我不知道该怎么做。

这是一个如何发布的示例:

在观看了 Neil 评论的视频后,我创建了以下方法:

但不起作用。我收到此错误:“TypeError at /api/v1/bundle/

'name' 是此函数的无效关键字参数"

0 投票
1 回答
1853 浏览

django - 使用强制身份验证 Django Rest 框架的单元测试

我正在使用 django rest 框架构建 RESTful API 服务,我已经到了必须为我的 RESTful API 服务创建自动化测试的地步。

sessionList api 需要令牌身份验证,以防用户没有令牌,他将无法访问会话集合。

当我使用 POSTMAN 和真正的浏览器对其进行测试时,该 api 运行良好。

会话列表:

然后我使用 DRF 测试创建了一个自动化测试

运行会话测试:

问题:在这两种情况下,如果用户有令牌或没有响应值是 HTTP_200_OK

我试图通过尝试不同的方法来实现测试来解决这个问题。我使用过 APIRequestFactory,也使用过 APIClient,但得到了相同的结果。老实说,多次阅读文档后,我无法理解 APIClient 和 APIRequestFactory 之间的区别。

测试结果:

我会很感激你的帮助。

0 投票
0 回答
45 浏览

django-models - 我无法通过请求的用户使用 drf 序列化程序和 CreateAPIView 获取对象名称

我有:object1 与 OneToOneField 与用户,object2 与 ForeignKeys 与用户和 object1。

在序列化程序中,我想检索 object1 的名称并将其作为 object2 中的默认名称。createAPIView 禁止获取操作,而我可以将 hiddenfield 与 currentDefaultUser 一起使用。如何获取用户 ID 并使用它来检索 object1?我应该使用 retreive 并创建 mixins 吗?

楷模

序列化器

意见

我想得到object1_name。

0 投票
0 回答
418 浏览

django - 使用 DRF 进行序列化时如何减少递归 MPTT 树查询

从事电子商务项目。项目有相关模型。类别模型具有 MPTT 继承。它使用 Django Rest Framework 在 API 之间进行通信。一个外国服务最近希望我将完整的类别路径放入我这边的 XML 响应中。但是这个请求导致了非常高的数据库查询。我需要减少查询,但我不知道如何在 DRF 序列化中做到这一点。我尝试了几种方法。我的最终方法是下面的模型视图和序列化。

一些 DRF 视图集将模型数据呈现为 XML

这是获取数据的序列化程序:

在我的测试数据库上,如果我不使用 get_full_category_path 方法,则有 20 个 ish 查询记录到记录器中。当我需要使用该方法来获取完整类别路径查询时,查询会上升到 100 多个。

我发布了我最近的尝试。我也尝试使用 MPTT 的 get_ancestors 方法,但它不受数据库命中计数的影响。无论哪种方式,对每个产品对象序列化都会产生非常大量的类别模型查询。

PS:我知道最好的选择是缓存树,但我真的想知道在进行递归 MPTT 查询时是否有办法减少 DB 命中。