问题标签 [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.
python - django rest框架中模型的多种更新操作
以下是我的榜样
现在以下是不同类型的操作,可以使用此 Group 模型:-
- 创建组
- 更新组
- 更新群组详情。
- 添加/删除组成员
- 向外人发送邀请
- 使管理员/删除管理员。
- 删除组
对于创建/删除操作,事情很清楚,但我对更新操作感到困惑,因为可以更新很多东西。目前,我在 Group 类中添加了辅助方法,它完成了上述所有活动。
我的问题是,如何将它与 DRF(Django Rest Framework) ModelViewSets 集成。由于只有一个 update() 方法,它只能服务于上述更新场景之一。我该如何处理其他更新场景?(一个可能的解决方案,我认为是在请求中使用操作类型标志并在 update() 方法中检查它来决定调用哪个模型方法,但这有点幼稚的解决方案。有没有更好的在 Django Rest Framework 中执行此操作的方法?)
提前致谢。
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'])
可能会有所帮助,但我想确保有另一种正确的方法来做到这一点。
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 },那么我们的结果集应该看起来像
这清楚了吗?
django-rest-framework - 默认情况下,DRF 视图集是否允许 PUT、PARTIAL_UPDATE、DELETE、CREATE、LIST 和 RETRIEVE?
假设我创建了这个视图集:
和这个路由器:
这个序列化器:
是否有文档提到默认情况下它是否允许user
接受PUT
、、PARTIAL_UPDATE
和请求?DELETE
LIST
CREATE
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/
django-rest-framework - 如何根本不允许 PUT 方法但允许在 DRF ViewSet 中使用 PATCH?
PUT
并且PATCH
都是同一个mixin(UpdateModelMixin)的一部分。
所以如果我像这样扩展它:
两者PUT
都PATCH
允许。我想根本不允许PUT
我的应用程序(因为PATCH
已经完成了工作,并且我想使用 just 来限制对象创建POST
)。一种方法是创建权限:
并将此权限授予我所有允许PATCH
. 这是最好的方法吗?有没有更优选的方式?
编辑:查看@wim提供的答案后,这是否是一个很好的解决方案(除了put
删除映射之外,一切都保持不变):
还是我需要重新定义其他方法SimpleRoute
(例如__init()__
, get_routes()
,_get_dynamic_routes()
等get_method_map()
)以使其正常工作?
django - django rest 框架 - 过滤日期查询参数
在我看来,我正在接收date
参数并且我正在对其进行过滤,以便我可以显示我今天的联系人,它是这样的:
就像我说的那样,我今天可以看到我的联系人,但是过去有一些联系,现在因为datepicker
有过去的日期限制,我看不到他们,我希望我过去的所有联系人今天都出现,或任何其他未来的一天,所以重点是我不希望留下过去创建的联系人,所以有人可以帮助我并解释我怎样才能得到那个结果。
django - 我可以使用 django 休息框架 ModelViewSet 来呈现其形式并将列表 json 传递给常规视图吗?
我想使用其余框架 api 来呈现来自列表方法的 json 数据和来自模板中帖子的表单。我一直在 rest-framework 文档中搜索渲染器类、Html 渲染和表单渲染,但没有找到解决方案。这是相关代码
这是回溯错误
编辑 2
从 url {'get':'list','post':'create','delete':'destroy','put':'update'} 中删除它,我收到此错误。
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.