首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django rest api通过一个rest api调用一次保存两个django模型

Django是一个基于Python的Web开发框架,它提供了一种简单高效的方式来构建Web应用程序。Django Rest Framework(简称DRF)是Django的一个扩展,用于构建RESTful API。通过DRF,我们可以轻松地创建和管理API,并与前端或其他应用程序进行数据交互。

在Django中,一个模型代表了数据库中的一个表,而模型的实例则代表了表中的一行数据。通过Django Rest Framework,我们可以通过一个REST API调用来保存两个Django模型。

首先,我们需要定义两个Django模型,并在模型中定义字段和关联关系。例如,我们有一个模型叫做Model1,另一个模型叫做Model2,它们之间存在一对多的关系,即一个Model1可以对应多个Model2

代码语言:txt
复制
from django.db import models

class Model1(models.Model):
    field1 = models.CharField(max_length=100)
    # 其他字段...

class Model2(models.Model):
    model1 = models.ForeignKey(Model1, on_delete=models.CASCADE)
    field2 = models.CharField(max_length=100)
    # 其他字段...

接下来,我们需要创建一个用于处理API请求的视图。在Django Rest Framework中,我们可以使用APIView类或者基于类的视图(GenericAPIViewListAPIView等)来处理API请求。这里我们以基于类的视图为例。

代码语言:txt
复制
from rest_framework import generics

class Model1Model2View(generics.CreateAPIView):
    serializer_class = Model1Model2Serializer

在视图中,我们需要定义一个序列化器(Serializer)来处理模型的序列化和反序列化。序列化器负责将模型实例转换为JSON数据以及将JSON数据转换为模型实例。

代码语言:txt
复制
from rest_framework import serializers

class Model2Serializer(serializers.ModelSerializer):
    class Meta:
        model = Model2
        fields = '__all__'

class Model1Model2Serializer(serializers.ModelSerializer):
    model2 = Model2Serializer(many=True)

    class Meta:
        model = Model1
        fields = '__all__'

    def create(self, validated_data):
        model2_data = validated_data.pop('model2')
        model1 = Model1.objects.create(**validated_data)
        for data in model2_data:
            Model2.objects.create(model1=model1, **data)
        return model1

在上述序列化器中,我们定义了一个Model2Serializer用于序列化和反序列化Model2模型,然后在Model1Model2Serializer中使用了Model2Serializer来处理Model2模型的关联关系。

最后,我们需要在urls.py中定义API的路由。

代码语言:txt
复制
from django.urls import path
from .views import Model1Model2View

urlpatterns = [
    path('api/model1model2/', Model1Model2View.as_view(), name='model1model2'),
]

现在,我们可以通过发送POST请求到/api/model1model2/来保存两个Django模型。请求的数据应该符合Model1Model2Serializer的格式。

综上所述,通过Django Rest Framework的REST API调用,我们可以方便地保存两个Django模型,并实现模型之间的关联关系。这种方法适用于需要一次性保存多个相关模型的场景,例如创建订单和订单详情等。

腾讯云提供了云服务器、云数据库、云存储等多种产品,可以用于支持Django应用程序的部署和运行。具体产品信息和介绍可以参考腾讯云官方网站:腾讯云产品

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Django REST Swagger实现指定api参数

    难点 对 Django REST Swagger < 2 的版本,要指定swagger的api参数非常容易,只要将相关说明以特定格式和yaml格式写在相应api的视图函数的文档字符串(DocStrings...一种解决方案 在Django REST framework基于类的api视图中定义filter_class过滤出模型(models)的特定字段,swagger会根据这些字段来渲染。...api,只能过滤模型的一些字段,而且api参数名与模型字段名不一致时还要额外处理。...启发 查阅Django REST Swagger的文档,Advanced Usage提到,基于类的文档api视图是这样的: from rest_framework.response import Response...() 以上这篇Django REST Swagger实现指定api参数就是小编分享给大家的全部内容了,希望能给大家一个参考。

    2.2K20

    Django REST framework 日志(重写drf_api_logger)

    Django REST framework 日志 默认的drf-api-logger没有保存用户并且没有获取日志的接口 本文通过重写drf-api-logger增加访问用户及获取日志的接口 并且增加定时器删除日志...重写 drf_api_logger其实就是django一个应用 复制drf_api_logger的源码后执行 pip uninstall drf-api-logger 删除模块(不删也没事) 添加用户信息...在模型中添加用户字段 # models.py from django.contrib.auth import get_user_model User = get_user_model() ··· class...# 导入你的验证Token方法,我使用的是Django-Rest-Knox from knox.auth import TokenAuthentication class APILoggerMiddleware...from django.db import models from drf_api_logger.utils import database_log_enabled from django.contrib.auth

    43420

    Django rest Framework入门 一 :手工实现常见API

    Django REST Framework Django本身是一个前后端不分离的框架,适合很多相对简单的开发需求,但是现在很多场景比较复杂,尤其是前端比较复杂,而现在很多前端框架都很不错,能极大简化前端开发工作...Django REST Framework就是一个基于Django的前后端分离框架,可以将后端的功能封装成API对外提供服务。...但是查有两种情况: 一个是查一条具体的数据(url最后以id结尾),一个是查所有的数据(url最后以资源名结尾,比如/books) 这篇笔记相关的代码在mannual-api分支上 代码仓库:https...# 获取请求中的数据 body = request.body.decode() body = json.loads(body) # 修改数据并保存...做Web开发的时候常见操作,在View中利用Model对数据库进行增删查改操作,只是最终返回的是数据,而不是通过Template渲染过的页面,这样就和DRF的API能力非常相似 url解释 跟路由(demo

    10410

    django-rest_framework api框架学习day1

    今天开始了django-rest-framework的学习 *** 其实api写起来的话要比前后端一起写要简单很多,因为你不需要关心前端怎么写,主要心思放在后端上面即可,前端的话随便找个模板,然后用...’, ‘rest_framework’, ‘ajax’, ] *** 注册完成之后路由上的写法也有些不同, URL中 *** from django.urls import path...*** 最主要的两个包 **** 用于api类的继承 from django.views import View 用于json格式数据的输出, from django.http import...首先需要导入两个包,一个method_decorator,还有一个是csrf_exempt *** from django.views.decorators.csrf import csrf_exempt...Serializer 序列化器 from rest_framework.views import APIView # 继承自View的api接口 from rest_framework.response

    1.3K40

    Django-REST:002-API接口序列化

    通过RESTful风格指定的格式定义不同的数据处理的请求方式,后端只需要提供对应的接口,前端视图部分负责调用进行数据展示;数据的交互全部交给异步调用进行实现,能最大程度的发挥项目开发过程中开发人员的能力...数据模型定义 打开snippet应用的数据模型定义模块models.py,添加一个定义代码描述的类型 from django.db import models from pygments.lexers...数据模型序列化处理 在snippet应用中,添加一个序列化模块,用于进行数据模型对象的序列化操作 在myrest_ex02/snippet/目录下创建文件:serializers.py # coding...交互测试 已经开发好了一部分序列交互的部分,我们接下来就可以通过django shell交互方式进行数据对象的序列化操作测试了,测试通过之后继续开发视图部分代码。...视图函数:API数据接口 经过第5步的交互测试,已经完成了对数据的处理方式的基本操作测试 接下来开始开发视图交互函数,也就是给其他调用的客户端提供数据的API接口函数!

    1.3K20

    Python利用Django 构建Rest Api: 快速入门教程

    前言 在本篇中,我们将为大家介绍如何基于Python构建一个Django Rest框架为特征的博客应用程序API服务,并且该API服务支持CRUD (Create-Read-Update-Delete...相反,我们还需要继续添加Django Rest库来处理将模型数据转换为Rest API。 5....Django Rest Framework 安装、配置 DjangoRestFramework,简称为DRF,它是负责将数据库模型转换为RESTful API。...这个过程有两个主要步骤:首先通过序列化器将数据转换成JSON,这样就可以通过internet发送数据,然后使用view来定义发送的数据。...当然,如果你喜欢用命令行来调用接口,也可以通过httpie工具在命令行终端获取: http http://127.0.0.1:8000/api/ ?

    5.4K20

    2. DRF入门

    drf介绍 Django REST framework (简称:DRF)是一个强大而灵活的 Web API 工具。 遵循RESTFullAPI风格,功能完善,可快速开发API平台。...app数据模型: myapp/models.py from django.db import models class User(models.Model): name = models.CharField...之前常用三种序列化方式: Django内置Serializers模块 Serializers是Django内置的一个序列化器,可直接将Python对象转为JSON格式,但不支持反序列化 from django.core...-> 调用序列化器的.is_valid方法进行效验 -> 调用序列化器的.save()方法保存数据 序列化器常用方法与属性: serializer.is_valid():调用序列化器验证是否通过...serializer.errors:获取反序列化器验证的错误信息 serializer.data:获取序列化器返回的数据 serializer.save():将验证通过的数据保存到数据库(ORM操作)

    1.6K50

    Django Rest Framework

    2)API策略装饰器 很多附加的装饰器,我们可以添加到@api_view()后面,例如要加入一个节流@throttle_classes来确保特定用户每天只能一次通过这个视图 @renderer_classes...(详情见官网http://www.django-rest-framework.org/api-guide/generic-views/) get_object():获取某一个具体的model实例对象。...保存与删除挂钩方法: 以下方法是mixins类提供,提供简单的对象保存和删除的行为重写: perform_create(self, serializer): CreateModelMixin 保存对象时候会被调用...方法,检索一个存在的model对象 UpdateModelMixin: 提供Update方法,更改一个模型对象 DestroyModelMixin:提供destroy方法,删除一个模型对象 4)Generic...Generic通用视图类提供具体操作的通用视图类, 可以理解为Generic.GenericAPIView和mixin类的合体,通过rest_framework.generic.调用 .CreateAPIView

    2.3K60

    简化 Django 开发的八个 Python 包 | Linux 中国

    我们为 Django 应用准备了六个包,为 DjangoREST 框架准备了两个包。几乎所有我们的项目里,都用到了这些包,真的,不是说笑。  ...处理 Django REST 框架的用户认证:django-rest-auth  如果 Django 开发中涉及到对外提供 API,你很可能用到了 Django REST Framework[22](DRF...如果你在用 DRF,那么你应该试试 django-rest-auth,它提供了用户注册、登录/注销,密码重置和社交媒体认证的端点(是通过添加 django-allauth 的支持来实现的,这两个包协作得很好...Django REST 框架的 API 可视化:django-rest-swagger  Django REST Swagger[23] 提供了一个功能丰富的用户界面,用来和 Django REST 框架的...django-rest-swagger 从 API 视图中的 docstrings 生成每个端点的文档,通过这种方法,为你的项目创建了一份 API 文档,这对你,对前端开发人员和用户都很有用。

    2.9K20

    如何使用Django构建现代Web应用程序来管理客户信息并在Ubuntu 18.04上进行反应

    Django一个免费的开源Python Web框架,遵循模型视图控制器(MVC)软件架构模式。 Django REST框架,一个功能强大且灵活的工具包,用于在Django中构建REST API。...在本教程中,您将使用React,DjangoDjango REST Framework构建一个带有单独REST API后端和前端的现代Web应用程序。...第4步 - 创建客户模型和初始数据 在创建Django应用程序和React前端之后,我们的下一步将是创建Customer模型,该模型表示将保存有关客户的信息的数据库表。...OK 通过创建Customer模型和演示数据,我们可以继续构建REST API。...在API消耗方面,在DjangoREST框架中的一个串行器允许将复杂的模型实例和查询集转换成JSON格式。

    13.9K83

    第 9 篇:实现分类、标签、归档日期接口

    一是 action 装饰器,它用来装饰一个视图集中的方法,被装饰的方法会被 django-rest-framework 的路由自动注册为一个 API 接口。...接着我们在接口返回一个 Response, Response 将序列化后的结果包装返回(保存在 data 属性中),django-rest-framework 会进一步帮我们把这个 Response 中包含的数据解析为合适的格式...由于 PostViewSet 视图集已经通过 django-rest-framework 的路由进行了注册,因此 list_archive_dates 也会被连带着自动注册为一个接口。...其中 filter_backends 设置为 DjangoFilterBackend,这样 API 在返回结果时, django-rest-framework 会调用设置的 backend(这里是 DjangoFilterBackend...category,tags 两个过滤字段因为是 Post 模型中定义的字段,因此 django-filter 可以自动推断其过滤规则,只需要在 Meta.fields 中声明即可。

    2.6K30

    用于实现用python和django编写的图像分类的Keras UI

    KerasUI是一种可视化工具,可以在图像分类中轻松训练模型,并允许将模型作为服务使用,只需调用API。...(可以更改为移动到任何其他数据库) 添加所有Django模块(以及两个自定义:管理UI和API) 启用cors INSTALLED_APPS = [ 'python_field', 'django.contrib.admin...'), } } 第一次运行 Django使用迁移系统从您定义的模型生成迁移文件。...它是如何构建的 该应用程序分为3个模块: 管理部分: Web UI,模块和所有核心内容 后台工作者:是一个可以在后台执行的Django命令,用于根据数据集训练模型 API:此部分公开API以从外部与应用程序交互...API是在一个单独的应用程序中创建的 python manage.py startapp API 基本上所有CRUD模型都可以通过API公开,但是需要指定如何序列化它 class DataSetItemSerializer

    2.8K50

    跟着官方文档学Python——Django Rest framework

    前后端分离[把前端的界面效果(html,css,js分离到另一个服务端,python服务端只需要返回数据即可]。前端形成一个独立的网站,服务端构成一个独立的网站 什么是API?...这是因为,我们在不同客户端搜索的时候,都访问了后端同一个 API 。这样后端针对前端的同一种需求,只需开发一种接口,就可满足前端不同终端对于该资源的调用,大大降低了开发工作量,节约了开发时间。...再比如前端js提供过来的json数据,对于python而言就是字符串,我们需要进行反序列化换成模型类对象,这样才能把数据保存到数据库中,这是反序列化。...Django Rest framework Django REST framework是一个内置在django里面的子应用,可以快速的开发REST API接口应用。...'rest_framework', ] 在项目中如果使用rest_framework框架实现API接口,主要有以下三个步骤: 将请求的数据(如JSON格式)转换为模型类对象 通过模型类对象进行数据库操作

    2.3K10
    领券