使用 django-rest-framework 创建对象后返回 id 值

     2023-02-23     57

关键词:

【中文标题】使用 django-rest-framework 创建对象后返回 id 值【英文标题】:Returning id value after object creation with django-rest-framework 【发布时间】:2013-09-19 20:32:03 【问题描述】:

我正在使用 django-rest-framework 通用视图通过 POST 请求在模型中创建对象。我想知道如何返回在 POST 之后创建的对象的 id,或者更一般地说,关于创建的对象的任何附加信息。

这是创建(并列出)对象的视图类:

class DetectorAPIList(generics.ListCreateAPIView):
    serializer_class = DetectorSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
    parser_classes = (MultiPartParser, FileUploadParser,)

    def pre_save(self, obj):
        obj.created_by = self.request.user.get_profile()

    def get_queryset(self):
        return (Detector.objects
                .filter(get_allowed_detectors(self.request.user))
                .order_by('-created_at'))

模型序列化器:

class DetectorSerializer(serializers.ModelSerializer):
    class Meta:
        model = Detector
        fields = ('id', 'name', 'object_class',
              'created_by', 'public', 'average_image', 'hash_value')
        exclude = ('created_by',)

谢谢!

【问题讨论】:

创建新对象后,您只需要返回数据库中存在的最后一个 id。此链接可能会对您有所帮助。 ***.com/questions/2548493/… 谢谢你,但我希望在 django-rest-framework 中实现这一点。我想知道有没有比那个级别更低的解决方案。 我猜如果DetectorSerializer继承自ModelSerializer,post方法应该返回创建的模型,我们可以看到DetectorSerializer吗? 非常感谢@mariodev。对不起,我的问题是客户端。虽然我仔细检查了我是否收到了数据,但我做错了。发送有关创建对象的所有数据。再次感谢! 没问题@kahlo。只需自己回答问题,然后选择您的答案作为正确答案。 【参考方案1】:

这里,DetectorSerializer 继承自 ModelSerializer 以及您的视图继承自泛型 ListCreateAPIView 所以当 POST向视图发出请求,它应该返回 id 以及在 Serializer 的字段中定义的所有属性。

【讨论】:

【参考方案2】:

因为当我遇到同样的问题时,我花了几分钟来解析这个答案,所以我想我会为后人总结:

通用视图 ListCreateApiView确实返回创建的对象。

这在文档listcreateapiview 中也很清楚:视图扩展createmodelmixin,其中指出:

如果创建了一个对象,这将返回一个 201 Created 响应,并将该对象的序列化表示作为响应的主体。

因此,如果您遇到此问题,请仔细查看您的客户端!

post$.pipe(tap(res => console.log(res)))

应该打印新创建的对象(假设 rxjs6 和 ES6 语法)

【讨论】:

如何仅使用 django 作为后端并使用 django-rest-framework 发布

】如何仅使用django作为后端并使用django-rest-framework发布【英文标题】:Howtousedjangoonlyabackendandpostwithdjango-rest-framework【发布时间】:2016-11-2712:06:00【问题描述】:我将只使用Django作为后端。前端将使用React完成,没有django模板。我... 查看详情

使用 django-rest-framework 创建对象后返回 id 值

】使用django-rest-framework创建对象后返回id值【英文标题】:Returningidvalueafterobjectcreationwithdjango-rest-framework【发布时间】:2013-09-1920:32:03【问题描述】:我正在使用django-rest-framework通用视图通过POST请求在模型中创建对象。我想知道... 查看详情

无法使用视图名称 (django-rest-framework) 解析超链接关系的 URL

】无法使用视图名称(django-rest-framework)解析超链接关系的URL【英文标题】:CouldnotresolveURLforhyperlinkedrelationshipusingviewname(django-rest-framework)【发布时间】:2018-06-2919:50:26【问题描述】:问题:我收到这样的错误。在/api/users/处配置不... 查看详情

为啥使用 django-rest-framework 时不需要 `csrf_exempt`?

】为啥使用django-rest-framework时不需要`csrf_exempt`?【英文标题】:Whyis`csrf_exempt`notneededwhenusingdjango-rest-framework?为什么使用django-rest-framework时不需要`csrf_exempt`?【发布时间】:2022-01-1323:32:30【问题描述】:当我使用Postman发出POST请... 查看详情

如何使用 django-rest-framework 进行社交登录? [关闭]

】如何使用django-rest-framework进行社交登录?[关闭]【英文标题】:Howexactlyworkasocialloginwithdjango-rest-framework?[closed]【发布时间】:2015-11-2916:50:57【问题描述】:我需要创建一个Web服务来登录用户。此Web服务将从Android或iOS应用程序调... 查看详情

如何使用 TemplateHTMLRenderer 在 Django-REST-Framework 中创建/放置?

】如何使用TemplateHTMLRenderer在Django-REST-Framework中创建/放置?【英文标题】:HowdoIuseTemplateHTMLRendererforCreate/PutinDjango-REST-Framework?【发布时间】:2019-04-1512:45:20【问题描述】:我很难找到正确的方法来初始化TemplateHTMLRenderer以呈现用... 查看详情

使用 django-rest-framework 序列化程序检索外键值

】使用django-rest-framework序列化程序检索外键值【英文标题】:RetrievingaForeignKeyvaluewithdjango-rest-frameworkserializers【发布时间】:2013-06-2105:27:24【问题描述】:我正在使用djangorest框架来创建API。我有以下型号:classCategory(models.Model):na... 查看详情

使用带有连接表的 Django-Rest-Framework 创建 API

】使用带有连接表的Django-Rest-Framework创建API【英文标题】:CreatinganAPIusingDjango-Rest-Frameworkwithjointables【发布时间】:2017-06-1212:41:59【问题描述】:我有以下MySQL表:-制作-型号-风格models.py(自动生成)classMakes(models.Model):id=models.Int... 查看详情

在 django-rest-framework 中,是不是可以同时使用 oauth 和 session 身份验证?

】在django-rest-framework中,是不是可以同时使用oauth和session身份验证?【英文标题】:Indjango-rest-framework,isitpossibletouseoauthandsessionauthenticationsimultaneously?在django-rest-framework中,是否可以同时使用oauth和session身份验证?【发布时间】... 查看详情

如何使用 Django-oauth-toolkit 使用 Django-rest-framework 测试 API 端点以进行身份​​验证

】如何使用Django-oauth-toolkit使用Django-rest-framework测试API端点以进行身份​​验证【英文标题】:HowtotestanAPIendpointwithDjango-rest-frameworkusingDjango-oauth-toolkitforauthentication【发布时间】:2015-02-2220:31:33【问题描述】:我有一个Django-rest-fr... 查看详情

Djongo 没有使用 Django-rest-framework 正确获取对象数组嵌入字段

】Djongo没有使用Django-rest-framework正确获取对象数组嵌入字段【英文标题】:DjongonotobtainingObjectArrayembeddedfieldscorrectlywithDjango-rest-framework【发布时间】:2019-08-1313:59:26【问题描述】:我在Django上将代码数组显示为嵌入字段时遇到问... 查看详情

django-rest-framework- 使用“或”过滤来自一个 url 参数的多个值

】django-rest-framework-使用“或”过滤来自一个url参数的多个值【英文标题】:django-rest-framework-Filteringusing\'or\'onmultiplevaluesfromoneurlparameter【发布时间】:2020-01-1019:14:24【问题描述】:我为我的API公开的模型设置了一个标记系统。模... 查看详情

在带有 django-rest-framework 的过滤器中使用自定义方法

】在带有django-rest-framework的过滤器中使用自定义方法【英文标题】:Usingcustommethodsinfilterwithdjango-rest-framework【发布时间】:2014-08-1609:15:30【问题描述】:我想在我的RESTAPI-seedjangodocsonthis中过滤查询参数。但是,我希望过滤的一个... 查看详情

如何使用 django-rest-framework 测试客户端测试二进制文件上传?

】如何使用django-rest-framework测试客户端测试二进制文件上传?【英文标题】:HowcanItestbinaryfileuploadingwithdjango-rest-framework\'stestclient?【发布时间】:2014-08-0319:09:15【问题描述】:我有一个Django应用程序,其视图接受要上传的文件。... 查看详情

django-rest-framework 是不是提供管理站点来管理模型?

】django-rest-framework是不是提供管理站点来管理模型?【英文标题】:Doesthedjango-rest-frameworkprovideanadminsitetomanagemodels?django-rest-framework是否提供管理站点来管理模型?【发布时间】:2020-12-1812:02:18【问题描述】:我正在寻找使用djang... 查看详情

断言错误:Django-rest-Framework

】断言错误:Django-rest-Framework【英文标题】:Assertionerrorat:Django-rest-Framework【发布时间】:2015-02-1313:36:02【问题描述】:我正在使用python3.4、Django1.7.1(书中考虑的版本)、Postgres9.3,我的IDE是Eclipse。我一直在研究“轻量级Django-E... 查看详情

记录对 django-rest-framework 的请求

】记录对django-rest-framework的请求【英文标题】:Loggingrequeststodjango-rest-framework【发布时间】:2013-03-1219:37:12【问题描述】:出于调试目的,我想使用Django的日志记录机制来记录每个“到达”django-rest-framework门口的传入请求。Djagno... 查看详情

django-rest-framework 按日期过滤=无

】django-rest-framework按日期过滤=无【英文标题】:django-rest-frameworkfilterbydate=None【发布时间】:2014-02-2611:35:00【问题描述】:我正在使用django-rest-framework和django-filter。我需要检索date属性为None的小部件列表,但无论我尝试什么查询... 查看详情