问题标签 [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 回答
120 浏览

python - ValueError:无法分配“u'http://localhost:8000/players/1/'”:“Game.referee”必须是“用户”实例

我明白这个错误在说什么,只是不明白如何在请求中传递用户实例(邮递员)。

以下是我的模型。

序列化器。

并且视图集是

直到这里"u'http://localhost:8000/players/1/'"工作正常。
只要我跟着。

相同的 API 调用引发以下错误
ValueError: Cannot assign "u'http://localhost:8000/players/1/'": "Game.referee" must be a "User" instance.

我真的应该从 url 创建用户实例还是有更优雅的方式来传递用户实例?

0 投票
1 回答
1499 浏览

python - Django REST 框架没有选择 API 端点

我正在尝试重构 API 以使用Django REST 框架。我已将其更改urls.py为以下内容(仍在 Django 1.11 中):

但是,如果我python manage.py runserver和 go to localhost:8000/api/v1.0/feedback/,我会收到 404 错误响应:

在此处输入图像描述

似乎r'^api/v1\.0/feedback/端点没有被拾取,即使它作为参数传递给router.register(). 任何想法为什么这不起作用?

0 投票
1 回答
108 浏览

django - 继承模型的序列化器

我声明了以下模型:

和序列化器:

乍一看,一切似乎都很好,它是在可浏览的 api 中正确生成的。尽管如此,当我想更新这两个字段时,只会更新“活动”。

当我做回报时,我会收到正确的回应:

但是名称字段根本没有更新。我更进一步,尝试在序列化程序中实现自定义更新方法:

之后,在一个 put 响应中,我只收到活动字段?:

在控制台上更令人惊讶:

我完全迷失了 :) 为什么序列化程序将明确提供的 Child 模型视为 Person ?如何强制 ChildSerializer 在 Child 模型上工作?

提前谢谢你

0 投票
1 回答
1439 浏览

python - html页面的DRF json 404 insetad

我想用 DRF 响应替换默认的 django 404(以及将来的其他),尽可能简单,只是返回(标准 DRF 响应):

所以我把这段代码放在我的 url.py 文件中。

当我设置 Debug 标志(在设置的 Ture 中我得到 500 时,将其设置为 False 404 但在 html 表单中。

我在这里阅读过文档:http: //www.django-rest-framework.org/api-guide/exceptions/但老实说,我不知道如何将其变为现实。

这似乎很容易,但不知何故我未能实现这一点(上面的代码来自其他 SO 线程)。

先感谢您

0 投票
1 回答
9019 浏览

django - Django Rest 框架中的发布请求处理

我正在使用 Django Rest Framework,目前从我们使用 Get 请求的后端提取一些数据,但由于 URL 限制很高,我们计划实现一个 Post 请求。为此,首先必须使后端 Django Rest API 可用于服务发布请求。

我是 Django 新手,在代码中找不到帖子或获取方法,我只能说我们正在使用视图集,我尝试使用“@detail_route(methods=['post'])”,但这没有不工作,我在这里做错了什么?

0 投票
1 回答
3108 浏览

python - Django Rest Framework:动态更新/创建多个对象,无需提供 pk

我刚刚偶然发现了 Django Rest Framework 遇到的最棘手的问题。让我先给你我的模型,然后解释:

这些模型描述了一个简单的邮票卡模型。一张邮票卡被认为是满的,当它通过外键关联的邮票与它的邮票卡格式的限制数量一样多时。我需要编写执行以下操作的视图:

  1. 该视图包含一个包含它们的 uuid 的标记列表(见下文)。
  2. 然后它需要为每个给定的邮票找到正确的邮票卡格式。
  3. 接下来,它需要检查请求用户是否有一张带有相应 stampcardformat 的邮票卡

    a)如果有,则需要检查印章卡是否已满

    i)如果已满,则需要新建给定格式的stampcard,并将stamps stampcard-foreignkey更新为创建的stampcard。

    ii)如果未满,则需要将 stamps stampcard-foreignkey 更新为找到的 stampcard

    b)如果用户没有给定stampcardformat 的stampcard,则需要创建一个新的stampcard,并将stamps stampcard-foreignkey 更新为创建的stampcard。

这是邮票的请求正文列表:

基于类的视图似乎不支持这种行为。我尝试修改基于类的视图,但无济于事。除了很多点之外,我还失败了,因为视图抛出了错误:

编辑

对于其他上下文:我需要 url 没有 pk、slug 或任何东西。所以网址应该是这样的:

并对其进行放置(或任何具有主体和工作的请求)。我写的路线是:

编辑:巨大的更新。所以我设法拼凑出一个可行的观点。首先,我像这样更新了邮票卡模型(我确实添加了一个新字段“完成”来跟踪它是否已满):

然后我写了这样的视图:

但是这段代码有两个问题:

  1. 我的直觉告诉我,在模型实例(例如)上调用 save() 的部分stamp.save()对于 api 来说是非常不安全的。我无法让它首先序列化数据。我的问题是:这种观点可以这样吗?或者我可以改进什么吗?例如,它不使用基于泛型类,但我不知道如何在这里使用它们......
  2. 如果用这种方法填满,我也很想退回邮票卡。但我也想排除所有不相关的邮票卡,这就是我打电话的原因.exclude(done=True)。不幸的是,一张被填满的邮票卡已经完成了=True!如何将在此过程中填写的印章卡添加到返回值?
0 投票
0 回答
623 浏览

django-models - 在Django rest框架中过滤外键下拉列表中的结果

我有 3 个模型。用户、流程、流程映射。流程模型有一个created_by 字段,它是用户模型的外键。流程映射模型具有流程名称字段,它是流程表的外键。

我的代码如下。

模型.py

视图.py

序列化程序.py

当用户创建一个进程然后去映射该进程时,外键列出了进程表中存在的所有进程。相反,我只需要列出登录用户创建的进程。我怎样才能做到这一点。

注意:我已经搜索过相同的答案,并且大多数答案都涉及表格。请注意,我没有使用任何表单,我希望在 views.py 中实现该逻辑。

提前致谢 :)

0 投票
0 回答
598 浏览

django-rest-framework - Django rest 框架:使用 ModelViewSet 搜索带注释的字段

你好吗?:)

我的问题是关于在带有自定义对象管理器的注释字段上使用 django RF ViewSets、RF Filters。

所以我有这门课

和这个形状的一些经理

最后,这个 viewSet

我得到

SomeClass 没有名为“some_annotated_field”的字段

即使我在向 api 请求它时确实得到了该字段。

问题是:我如何搜索some_annotated_field

0 投票
2 回答
1332 浏览

python - Django REST ViewSet ordering for Null-able columns

Consider a table Person:

We want to sort the rows by wealth, descending, i.e. to get (Abby, Carl, Ben, Diane), but Django's order_by function sorts them by Null first:

gives (Ben, Diane, Abby, Carl), i.e. it first lists the Null values then sorts by wealth.


I tried redefining the get_queryset method:

This does return the desired behavior, (Abby, Carl, Ben, Diane) but messes up the detail view, and gives the get() returned multiple values error.


Is there a way to get the desired behavior, by customizing the ordering functionality, or modifying get_queryset only for the list view?

0 投票
2 回答
321 浏览

vue.js - DRF PATCH 方法,获取 request.data 中字符串类型的所有值

我在 vue 中发送带有表单数据的 axios.patch 请求

并调用 Django ModelViewset 部分更新

问题是我以字符串形式获取所有值.. null 值为“null”,整数值为“1”,依此类推。 在此处输入图像描述

我应该怎么做才能在 request.data 中获取正常值(null 为 None,整数为 int)?