问题标签 [django-rest-viewsets]

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 投票
1 回答
474 浏览

python - django rest框架中模型的多种更新操作

以下是我的榜样

现在以下是不同类型的操作,可以使用此 Group 模型:-

  • 创建组
  • 更新组
    1. 更新群组详情。
    2. 添加/删除组成员
    3. 向外人发送邀请
    4. 使管理员/删除管理员。
      • 删除组

对于创建/删除操作,事情很清楚,但我对更新操作感到困惑,因为可以更新很多东西。目前,我在 Group 类中添加了辅助方法,它完成了上述所有活动。

我的问题是,如何将它与 DRF(Django Rest Framework) ModelViewSets 集成。由于只有一个 update() 方法,它只能服务于上述更新场景之一。我该如何处理其他更新场景?(一个可能的解决方案,我认为是在请求中使用操作类型标志并在 update() 方法中检查它来决定调用哪个模型方法,但这有点幼稚的解决方案。有没有更好的在 Django Rest Framework 中执行此操作的方法?)

提前致谢。

0 投票
0 回答
231 浏览

python - api 文档中视图集的自定义注释

我有 django rest framework api 应用程序并为其生成文档。我使用带有视图集的 api 视图,并且我有自定义方法。在网址中,我使用路由器。对于生成文档,我使用 DRF Docs。

我的观点:

网址:

我的 api 文档结果: 在此处输入图像描述

我想要 set_password 方法的自定义注释并显示不同的字段,因为我将此方法用于其他序列化程序。我怎样才能做到这一点?

0 投票
0 回答
126 浏览

django - DjangoRest - 可以在 ModelViewSet 中定义多个 create(self, request)

我有一个项目需要执行同一模型的不同创建过程。

我们可以通过创建多个ModelViewSet.

端点是POST /api/animal/

端点是POST /api/calving/

但我宁愿不这样做。

现在可以create(self, request)在单个中定义多个ModelViewSet

这样我可以避免为同一个模型创建另一个模型视图集。

的端点create(self, request):POST /api/animal/

问题是我不知道calving(self, request):不使用的端点是什么@list_route(methods=['post])

@list_route(methods=['post'])可能会有所帮助,但我想确保有另一种正确的方法来做到这一点。

0 投票
1 回答
425 浏览

python - Django过滤具有两个值的属性,更喜欢一个的结果

这是一个奇怪的问题,所以提前抱歉。我在 Django Rest 中有一个如下所示的模型:

而且我有一个 ViewSet 需要返回具有给定 {request_barId、request_buzzId、lastUpdateDate} 的所有 Foo 的列表。这很简单,

这就是问题所在。BuzzId 有一个默认值,即指定的 BuzzId 需要覆盖的基本列表,替换基本列表上的实例那是我有点迷路的地方。我有一个解决方案,但我觉得它不是特别优雅,并且有一种方法可以做到这一点。这是我做覆盖的代码:

这看起来真的很笨拙。有没有办法清理这个?

编辑:为了澄清,假设元组 { 1, 0, '01-01-1970' } 的列表表示基本集 (buzzId: 0),并返回包含 fizzIds { 1, 2, 3 的对象列表, 10}。假设元组 { 1, 1, '01-01-1970' } 表示某个buzzId 对完整字符串集的请求。如果我们说我们的 BuzzId 为 1(称为增强)匹配 Foos 和 fizzIds { 2, 10, 15, 20 },那么我们的结果集应该看起来像

这清楚了吗?

0 投票
1 回答
2233 浏览

django-rest-framework - 默认情况下,DRF 视图集是否允许 PUT、PARTIAL_UPDATE、DELETE、CREATE、LIST 和 RETRIEVE?

假设我创建了这个视图集:

和这个路由器:

这个序列化器:

是否有文档提到默认情况下它是否允许user接受PUT、、PARTIAL_UPDATE和请求?DELETELISTCREATE

0 投票
2 回答
3002 浏览

django - Viewsets `create()` 和 `update()` 和 Serializers `create()` 和 `update()` 有什么区别?

在这里: http: //www.django-rest-framework.org/api-guide/viewsets/#modelviewset它说“ModelViewSet 类提供的操作是 .list()、.retrieve()、.create() 、.update()、.partial_update() 和 .destroy()。”

在这里: http: //www.django-rest-framework.org/api-guide/serializers/#modelserializer它说“ModelSerializer 类与常规 Serializer 类相同,除了:它包括 .创建()和更新()。”

1)假设有一个 ViewsetUserViewSet和 routeruser和 serializer UserSerializer。如果我发送POST/user/它会调用UserViewSet'screate()还是 the UserSerializer's create()

2)假设UserViewSet有这个权限:

如果我发送到UserSerializer's还会被调用吗?create()POST/user/

0 投票
7 回答
5149 浏览

django-rest-framework - 如何根本不允许 PUT 方法但允许在 DRF ViewSet 中使用 PATCH?

PUT并且PATCH都是同一个mixin(UpdateModelMixin)的一部分。

所以如果我像这样扩展它:

两者PUTPATCH允许。我想根本不允许PUT我的应用程序(因为PATCH已经完成了工作,并且我想使用 just 来限制对象创建POST)。一种方法是创建权限:

并将此权限授予我所有允许PATCH. 这是最好的方法吗?有没有更优选的方式?

编辑:查看@wim提供的答案后,这是否是一个很好的解决方案(除了put删除映射之外,一切都保持不变):

还是我需要重新定义其他方法SimpleRoute(例如__init()__, get_routes(),_get_dynamic_routes()get_method_map())以使其正常工作?

0 投票
2 回答
779 浏览

django - django rest 框架 - 过滤日期查询参数

在我看来,我正在接收date参数并且我正在对其进行过滤,以便我可以显示我今天的联系人,它是这样的:

就像我说的那样,我今天可以看到我的联系人,但是过去有一些联系,现在因为datepicker有过去的日期限制,我看不到他们,我希望我过去的所有联系人今天都出现,或任何其他未来的一天,所以重点是我不希望留下过去创建的联系人,所以有人可以帮助我并解释我怎样才能得到那个结果。

0 投票
0 回答
649 浏览

django - 我可以使用 django 休息框架 ModelViewSet 来呈现其形式并将列表 json 传递给常规视图吗?

我想使用其余框架 api 来呈现来自列表方法的 json 数据和来自模板中帖子的表单。我一直在 rest-framework 文档中搜索渲染器类、Html 渲染和表单渲染,但没有找到解决方案。这是相关代码

这是回溯错误

编辑 2

从 url {'get':'list','post':'create','delete':'destroy','put':'update'} 中删除它,我收到此错误。

0 投票
1 回答
661 浏览

django-rest-framework - 路由器“detail_route”中是否需要查找字段?

看这里: http: //www.django-rest-framework.org/api-guide/routers/#extra-link-and-actions这个例子有pk=None

并说将生成以下 url 模式:^users/{pk}/set_password/$

在这里: http: //www.django-rest-framework.org/api-guide/routers/#simplerouter它还说该lookup字段在 url 中:{prefix}/{lookup}/{methodname}/

DRF 是否将lookup值传递给detail_route方法?根据文档,它看起来确实如此,但在这里: http: //www.django-rest-framework.org/api-guide/routers/#example

如果您向下滚动到:

不要求查找值作为group_names函数的参数。我的问题是:

1) pk/ 中是否需要查找字段参数detail_route

2)如果不是,那么如何self.get_object()知道要获取哪个对象?

3)另外,如果没有,那么不@list_route应该使用,因为甚至没有使用查找?

编辑:在这里: http: //www.django-rest-framework.org/api-guide/viewsets/#marking-extra-actions-for-routing它还说The @detail_route decorator contains pk in its URL pattern and is intended for methods which require a single instance.