DRF一对多序列化和反序列化
models.py# 商品分类
class Category(models.Model):
name = models.CharField(max_length=32) # 商品
class Goods(models.Model):
name = models.CharField(max_length=32)
price = models.DecimalField(max_digits=9,decimal_places=2)
cate = models.ForeignKey(to='Category',on_delete=models.CASCADE)urls.pyfrom django.urls import path,include
from . import views
urlpatterns = [
path('goods/',views.GoodsView.as_view()),
]seralizers.py# 序列化
class GoodsSerializer(serializers.ModelSerializer):
# 如果想查出分类名称 CharField(source='<本model中的外键>.<外键指向的model的相应属性>')
cate_name = serializers.CharField(source='cate.name')
class Meta:
model=Goods
fields = ('cate_name','name','price') # 反序列化
class GoodsUnSerializer(serializers.Serializer):
name = serializers.CharField(max_length=32)
price = serializers.DecimalField(max_digits=9,decimal_places=2)
cate = serializers.IntegerField() # 添加
def create(self, data):
return Goods.objects.create(
cate_id = data.pop('cate'),
**data
)
# 编辑
def update(self,instance,data):
return instance.update(
cate_id = data.pop('cate'),
**data
)
views.pyclass GoodsView(APIView):
# 查询
def get(self,request):
goods = models.Goods.objects.all()
gs = GoodsSerializer(goods,many=True)
return Response(gs.data) # 添加
def post(self,request):
dic = {"name":"金丝猴","price":132,'cate':3}
gs = GoodsUnSerializer(data=dic)
if gs.is_valid():
gs.save()
return HttpResponse('ok')
return HttpResponse('error') # 更新
def put(self,request):
obj = models.Goods.objects.filter(id=1)
dic = {"name":"金丝猴123","price":234,'cate':2}
gs = GoodsUnSerializer(obj,data=dic)
if gs.is_valid():
gs.save()
return HttpResponse('put-ok')
return HttpResponse('put-error')
DRF一对多序列化和反序列化的更多相关文章
- day71:drf:API接口&Restful API规范&Django Rest Framework&drf中的序列化和反序列化功能
目录 1.web应用模式 2.API接口 3.Restful API规范 4.序列化 5.Django Rest Framework 1.drf的简单介绍 2.drf的特点 3.如何安装drf 4.d ...
- DRF单表序列化和反序列化
安装 djangorestframework pip install djangorestframework 将rest_framework注册到app上 INSTALLED_APPS = [ 're ...
- drf序列化与反序列化
序列化器-Serializer 定义序列化器 Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serial ...
- DRF框架(二)——解析模块(parsers)、异常模块(exception_handler)、响应模块(Response)、三大序列化组件介绍、Serializer组件(序列化与反序列化使用)
解析模块 为什么要配置解析模块 1)drf给我们提供了多种解析数据包方式的解析类 form-data/urlencoded/json 2)我们可以通过配置来控制前台提交的哪些格式的数据后台在解析,哪些 ...
- DRF框架(三)——media资源路径设置、多表设计复习及补充、序列化组件(ModelSerializer)操作多表(序列化与反序列化)、多表序列化与反序列化整合(重点)
media资源路径设置 (设置好后把图片放在这个文件夹中,通过链接能访问到图片) 1.先在根目录设置一个media文件夹 2.配置settings.py,加上下面的 MEDIA_URL = '/me ...
- drf序列化及反序列化
假如把drf看做一个汉堡包,我们之前讲的模块属于汉堡包前面的盖盖(请求模块.渲染模块)和底底(异常模块.解析模块.响应模块),但是真正中间的夹心没有讲,那么今天我就和大家来看一下汉堡包的夹心(序列化及 ...
- drf的序列化和反序列化
序列化器--Serializer 选项参数: max_length 最大长度 min_length 最小长度 allow_blank 是否允许为空 trim_whitespace 是否截断空白字符 m ...
- drf序列化和反序列化
目录 drf序列化和反序列化 一.自定义序列化 1.1 设置国际化 二.通过视图类的序列化和反序列化 三.ModelSerializer类实现序列化和反序列化 drf序列化和反序列化 一.自定义序列化 ...
- ModelSerializer,序列化与反序列化整合
复习 """ 1.解析模块:全局局部配置 REST_FRAMEWORK = { # 全局解析类配置 'DEFAULT_PARSER_CLASSES': [ 'rest_f ...
随机推荐
- mfc 选择文件(可多选)
CFileDialog dlg( TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, NULL, NULL ); DWORD MAXFILE = ; //2562 is t ...
- 精选干货 在java中创建kafka
这个详细的教程将帮助你创建一个简单的Kafka生产者,该生产者可将记录发布到Kafka集群. 通过优锐课的java学习架构分享中,在本教程中,我们将创建一个简单的Java示例,该示例创建一个Kafka ...
- StringBuffer类、StringBuilder类详解
StringBuffer是一个字符串缓冲区,是一个容器,而且长度可变,可以直接操作多个数据类型, 最终会通过toString()方法变成字符串. 容器的功能有: 1.存储 public StringB ...
- python刷LeetCode:13. 罗马数字转整数
难度等级:简单 题目描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ...
- 2020/2/2 PHP代码审计之反序列化
0x00 序列化与反序列化 序列化: serialize()把对象转换为字节序列的过程称为对象的序列化 反序列化: unserialize()把字节序列恢复为对象的过程称为对象的反序列化 0x01 序 ...
- UVA - 1631 Locker(密码锁)(dp---记忆化搜索)
题意:有一个n(n<=1000)位密码锁,每位都是0~9,可以循环旋转.每次可以让1~3个相邻数字同时往上或者往下转一格.输入初始状态和终止状态(长度不超过1000),问最少要转几次. 分析: ...
- 高性能集群软件keepalived
Keepalived介绍 以下是keepalive官网上的介绍.官方站点为http://www.keepalived.org. Keepalived is a routing sof ...
- C++中substr()详解
#include<string> #include<iostream> using namespace std; int main() { string s("123 ...
- win10编译jpeglib
jpeglib看名字都大概知道和图像格式jpg或jpeg有关了,是一个常用的图像处理软件都会依赖的开源库. 首先去官网下载jpeglib的源码,直接取这里下载:http://www.ijg.org/f ...
- python3.4+Django+pymysql
pip install Pymysql 修改app里面的__init__.py import pymysqlpymysql.install_as_MySQLdb()