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

Django Rest - Posted数据在外键引用的表中创建新行

Django Rest是一个基于Django框架的RESTful API开发工具,它提供了一套简单而强大的方式来构建Web API。在Django Rest中,通过使用POST方法来创建新的数据行是非常常见的操作。

当使用Django Rest中的POST方法来创建新的数据行时,如果需要在外键引用的表中创建新行,需要进行以下步骤:

  1. 首先,确保在Django模型中定义了外键关系。在Django的模型定义中,可以使用ForeignKey字段来定义外键关系。例如,假设我们有两个模型,一个是User模型,另一个是Post模型,Post模型中有一个外键字段user,用于引用User模型中的用户。
代码语言:txt
复制
from django.db import models

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

class Post(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=100)
    content = models.TextField()
    # 其他字段...
  1. 在Django Rest的视图中,通过重写create方法来处理POST请求,并在该方法中创建新的数据行。在create方法中,可以通过serializer.validated_data获取到POST请求中的数据。
代码语言:txt
复制
from rest_framework import viewsets
from .serializers import PostSerializer

class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        
        # 获取外键引用的数据
        user_id = serializer.validated_data.get('user')
        user = User.objects.get(id=user_id)
        
        # 创建新的数据行
        post = Post.objects.create(user=user, **serializer.validated_data)
        
        return Response(serializer.data, status=status.HTTP_201_CREATED)

在上述代码中,serializer.validated_data包含了POST请求中的数据,可以通过serializer.validated_data.get('user')获取到外键引用的数据。

  1. 推荐的腾讯云相关产品和产品介绍链接地址:
  • 腾讯云服务器(CVM):提供可扩展的云服务器实例,满足不同规模和需求的应用场景。详情请参考:腾讯云服务器
  • 腾讯云数据库MySQL版:提供高性能、高可用的云数据库服务,适用于各种规模的应用。详情请参考:腾讯云数据库MySQL版
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务,适用于图片、视频、文档等各种类型的文件存储。详情请参考:腾讯云对象存储

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和项目要求进行评估。

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

相关·内容

Django创建、外字段属性简介、脏数据概念、子序列化

Django设置 通过图书管理系统引入多表操作:如果我们创建方式是先抽象出之间相同字段建一个父类,然后在用每个类去继承这个父类,如下面的代码,我们将无法得到期望表字段。...更合理) """ Django orm中外字段属性详解 在建之前我们对外字段属性进行了解: 1)related_name在外设置外反向查询字段名:正向找字段名,反向找related_name...值,related_name默认值是名小写 + _set,这就是为什么在Django反向查询时我们使用名小写 + _set去查另一张数据。...4.幻读:一个事务按相同查询条件重新读取以前检索过数据,却发现其他事务插入了满足其查询条件数据,这种现象就称为“幻读”。...子序列化 Django子序列化功能是:通过跨查询数据然后对跨查到数据反序列化。

4.3K30

Sentry 开发者贡献指南 - 数据库迁移

创建大多没问题,但是对于像 Project、Group 这样大/繁忙,由于获取锁困难,它可能会导致问题。您仍然可以创建 Django 级别的外,而无需创建数据库约束。...如果你真的想重命名表,那么步骤将是: 使用新名称创建一个 开始对旧表和进行双重写入,最好是在事务。 将旧回填到。 将 model 更改为从新开始读取。...如果旧代码尝试向插入一,则插入将失败,因为旧代码不知道列存在,因此无法为该列提供值。 向列添加 NOT NULL 将 not null 添加到列可能很危险,即使该列每一都有数据。...对于任何其他类型,最好前进路径通常是: 创建具有类型列。 开始对新旧列进行双重写入。 回填并将旧列值转换为列。 更改代码以使用新字段。 停止写入旧列并从代码删除引用。 从数据删除旧列。...如果你真的想重命名列,那么步骤将是: 创建具有新名称列 开始对新旧列进行双重写入。 将旧列值回填到。 将字段更改为从新列开始读取。 停止写入旧列并从代码删除引用。 从数据删除旧列。

3.6K20

第21篇-使用Django进行ElasticSearch简单方法

那就是我发现ElasticSearch时候。 ElasticSearch为您数据索引文档,而不是像常规关系数据库那样使用数据。这可以加快搜索速度,并提供其他常规数据库无法获得其他好处。...我们将很快讨论一些示例,但首先我需要阐明我们要完成工作: ● 在我们本地计算机上设置ElasticSearch并确保其正常运行 ● 设置一个Django项目 ● 批量索引数据已经存在数据...● 用户保存到数据每个实例索引 ● 基本搜索示例 好吧,这似乎很简单。...elasticsearchproject cd elasticsearchproject python manage.py startapp elasticsearchapp 创建Django...这将是ElasticSearch参考点,以便当在数据初始化索引并保存每个创建对象实例时,它知道要处理索引。

3.2K00

第15篇-使用Django进行ElasticSearch简单方法

那就是我发现ElasticSearch时候。 ElasticSearch为您数据索引文档,而不是像常规关系数据库那样使用数据。这样可以加快搜索速度,并提供其他常规数据库无法获得其他好处。...在搜索了如何使用Django正确实现ElasticSearch很长时间之后,我并没有真正找到令人满意答案。似乎正在采取不必要步骤来将数据索引到ElasticSearch。...我们将很快讨论一些示例,但是首先我需要阐明我们要完成工作: ● 在我们本地计算机上设置ElasticSearch并确保其正常运行 ● 设置一个Django项目 ● 批量索引数据已经存在数据...这将是ElasticSearch参考点,以便当在数据初始化索引并保存每个创建对象实例时,它知道要处理索引。...现在,您已成功将所有实例索引到ElasticSearch创建了一个 post_save 对每个保存实例进行索引信号,并创建了一个函数来搜索我们ElasticSearch数据数据

5.2K00

解决django框架model中外不落实到数据库问题

在外字段参数添加db_constraint=False即可,数据没有外关系,代码依然可以按照正常外方式使用。...不通过外查询多对多数据数据设计不使用外 终于解决了 如何没有通过外查询多对多数据,多对一数据 意义: 使用外,高并发程序中会产生锁,影响性能。...为了未来数据库扩展,数据库设计时考虑使用外,但在实际数据库设计时,将外实现放在逻辑层控制。 全部都是单 解决办法是通过SerializerMethodField自定义字段来实现。...model 定义,无外 # -*- coding:UTF-8 -*- from django.db import models #导入django自带User模型进行扩展 from django.contrib.auth.models...以上这篇解决django框架model中外不落实到数据库问题就是小编分享给大家全部内容了,希望能给大家一个参考。

1.3K10

Django 3.1 官网学习路线

但是,其中一些应用程序至少使用了一个数据,因此在使用之前,我们需要在数据创建。...(我们稍后将讨论这些)创建任何必要数据。...现在,再次运行 migrate 在数据创建这些模型: D:\Django_study> python manage.py migrate Operations to perform: Apply...OK migrate 命令获取所有还没有应用迁移(Django 跟踪哪些迁移是使用数据名为 django_migrations 特殊应用),并在数据库上运行它们——本质上,就是将您对模型所做更改与数据模式同步...迁移功能非常强大,它允许您在开发项目时随着时间推移更改模型,而不需要删除数据库或创建——它专门用于实时升级数据库,而不会丢失数据

8.1K10

Django model 层之Models与Mysql数据库小结

myapp_album.artist列引用mapp_musician.auto_id字段值,即mapp_musician.auto_id为myapp_album。...删除被参照表某条表记录,同时级联删除参照表,同待删除记录存在外关联关系记录。 PROTECT 删除被参照表某条表记录,如果参照表,存在与该记录有外关系记录,则不让删除。...SET_NULL 删除被参照表某条表记录,设置参照表,同待删除记录存在外关联记录列值为null。当且仅当设置了null=True选项时可用。...SET_DEFAULT 删除被参照表某条表记录,设置参照表,同待删除记录存在外关联记录列值为默认值。必须为外列设置默认值。...,不对参照表同待删除记录存在外关联记录做任何处理。

2.2K20

五个很实用Django 项目推荐

五个很实用Django 项目推荐 Posted August 16, 2016 很多Django包都能很大增加我们开发效率或者增加我们项目的功能, 比如: django-rest-framework...但是今天我想推荐一些其他包, 更有爱包. django-sql-explorer 有时候你用户想通过执行SQL方式来访问你数据库里面的数据, 但处于某些安全原因,你不能给他们直接执行数据权限...#Viewing all queries django-tables-2 很多数据在web通过表格展示, 通过它能够很方便操作HTML表格, 让你非常容易Django操作表格....django-rest-hooks REST APIs 是很棒接口设计, 而且django-rest-framework能很好提供这个功能....但是如果你仅仅是基于事件来获取数据, 那么你需要一个webhook. 使用这个包可以非常容易REST框架装饰你模型. 下面就是相应代码.

1.7K40

Django_rest框架实践项目(一)入门helloWord项目的创建和代码解释

目录 创建项目 创建项目 在django_venv 虚拟环境里面创建一个helloworld项目,并且创建一个quickstartapp ,也就是再创建一个app。...,并且连接数据库,现在是连接mysql数据库,将app映射到数据库里面 不需要将这个新创建app注册到setting里面,这个和django项目不一样,但是要注册 ‘rest_framework’,...1 应该映射用户model,但是django已经将自带映射好了。所以,用户model就不需要自己建设这个模型了。...')), ] 记住: 必须在url里面创建router对象并且引用之后,才会出现rest框架页面,因为这个对象是rest框架里面的类创建对象 from rest_framework import...所以路由里面一定到创建rest对象并且进行引用。 以上操作之后,在浏览器输入之后,我们就会看见这样页面 ?

1.2K20

Django快速入门——投票程序(4,6)表单&界面、风格

由于我们创建一个POST表单(它具有修改数据作用),所以我们需要小心跨站点请求伪造。Django 自带了一个非常有用防御系统。...简而言之,所有针对内部URLPOST表单都应该使用 {% csrf_token %}模板标签。 现在,让我们来创建一个Django视图来处理提交数据。...我们 vote() 视图代码有一个小问题。代码首先从数据获取了 selected_choice 对象,接着计算 vote 值,最后把值存回数据库。...因为 AppDirectoriesFinder 存在,你可以在 Django 以 polls/style.css 形式引用此文件,类似你引用模板路径方式。...警告 {% static %}模板标签在静态文件(例如样式是不可用,因为它们不是由 Django 生成

21020

在线网站搭建(七):数据库字段定义(上)

:4个app项目的创建数据库字段定义,鉴于篇幅原因,这里分上下两篇进行介绍。...以外其他,如果一次删除不了(那是因为之间存在外联系)就一个个删除: [4ce94hidvk.png] 现在再来点击Tools 菜单下 Run manage.py Task,按顺序运行如下命令...循环引用 看下面这个图: [rmk8x7z7ed.jpeg] 我们通常会在user定义userCourse这个字段,用来记录用户学习课程,它会有两个外:user和course。...其实是因为那些信息相关性很大,经常是循环引用,所以我们把那些信息都放到operation这个app。...我们把鼠标移至models.py这个文件上,再点击右侧structure,可以发现我们刚才新创建3个类(其实就是数据库里数据): [ro8qkdy0j6.jpeg] [0uiyibza7t.png

86720

零基础使用Django2.0.1打造在线教育网站(七):数据库字段定义(上)

项目的创建数据库字段定义,鉴于篇幅原因,这里分上下两篇进行介绍。...以外其他,如果一次删除不了(那是因为之间存在外联系)就一个个删除:[iidb32m871.png] 现在再来点击**Tools** 菜单下 **Run manage.py Task**,按顺序运行如下命令...循环引用 看下面这个图:[4cmcqwrxqr.png] 我们通常会在user定义userCourse这个字段,用来记录用户学习课程,它会有两个外:user和course。...其实是因为那些信息相关性很大,经常是循环引用,所以我们把那些信息都放到operation这个app。...我们把鼠标移至models.py这个文件上,再点击右侧structure,可以发现我们刚才新创建3个类(其实就是数据库里数据):[z438zw77ln.png] [n416v0tx6a.png]

89360

DRF Swagger自定义action文档参数实现

DRF Swagger自定义action文档参数实现 Posted July 04, 2018 ?...#Swagger 这里不讲 DRF(django rest framework) 和 DRS(django rest swagger) 如何结合使用, 在以上两个项目文档中都有相关文档。...但大多数我们往往需要根据特定需求, 做一些自定义接口, 比如使用 api_view 装饰器定义函数式视图, 或者使用DRF action 装饰器定义自定义接口(在一些较早DRF版本为...那么这种情况下, 一些query和定义 Form 不能直接在 swagger 很好展示出来,所以文档性描述接口语言, 在这个时候很是需要。...DRF schema 是控制接口参数架构组件, 我们基于默认 AutoSchema 重写一个 Schama.

3.6K30

TO-do api

初始化创建 任何Django API第一步始终是安装Django,然后在其之上添加Django REST Framework。 首先在桌面上代码目录创建一个专用todo目录。...那么您就不在现有的虚拟环境。 在此todo文件夹中将是我们后端和前端目录。 让我们创建一个后端文件夹,安装Django,然后激活一个虚拟环境。...api/有所有待办事项列表位于空字符串 '',即。 每个待办事项都将在其主键上可用,这是Django在每个数据自动设置值。 第一个条目是1,第二个条目是2,依此类推。...首先在todos应用创建一个serializers.py文件。...Views 在传统Django,视图用于自定义要发送到模板数据。 在Django REST Framework,视图执行相同操作,但对序列化数据而言。

3.6K31

Django REST 框架详解 04 | 序列化与反序列化及二者整合

1.视图 2.路由 3.接口测试 一、序列化 1.步骤 model s.py,定义与字段,及关系 serializes.py 序列化与反序列化 views.py 写 get,post 等操作..., author, is_delete, create_time 3.模型构建 modes.py from django.db import models # 基 # 提供公用字段,而不创建 from...(default=0) create_time = models.DateTimeField(auto_now_add=True) # 作为基 Model 不能在数据创建...,提数据 publish = PublishModelSerializer() class Meta: # 序列化类关联 model 类 model...三、序列化与反序列整合 从数据安全性和健壮性来考虑,所有的自定义字段不能与 model 原字段相同 因为序列化是将外字段作为 Dict,而反序列化会将外字段作为 Object 1.视图 views.py

95610

Django 1.10文文档-第一个应用Part2-模型和管理站点

这些应用,默认包含在Django,以方便通用场合下使用。 其中一些应用程序使用至少一个数据,所以我们需要在数据创建,然后才能使用它们。...有了这些代码,Django就能够: 为该应用创建数据(CREATE TABLE 语句); 为Question对象和Choice对象创建一个访问数据python API。...,已经对模型做了一些更改(在这个例子,你创建了一个模型)并且会将这些更改存储为迁移文件。...(你也可以重写这个行为); 按照惯例,Django在外字段名后面添加 "_id"。(你依然可以重写这个行为); 外关系由FOREIGN KEY约束显式声明。...就是使你数据库模式和你改动后模型进行同步。 迁移功能非常强大,可以让你在开发过程不断修改你模型而不用删除数据库或者然后再重新生成一个 —— 它专注于升级你数据库且不丢失数据

2.3K60
领券