writeonly

DRF序列化和反序列化(一:Serializer)

泄露秘密 提交于 2021-01-14 06:51:46
一:表关系如下 from django.db import models # Create your models here. __all__=['Book','Publisher','Authon'] class Book(models.Model): title =models.CharField(max_length=32,verbose_name='图书名称') CHOICES=((1,'python'),(2,'go'),(3,'linux')) category=models.IntegerField(choices=CHOICES,verbose_name='图书类别') pub_time=models.DateTimeField(verbose_name='出版日期') authon=models.ManyToManyField('Authon') publisher=models.ForeignKey(to='Publisher',on_delete=None) def __str__(self): return self.title class Authon(models.Model): name= models.CharField(max_length=32, verbose_name='作者姓名') def __str__(self): return

DRF序列化/反序列化

China☆狼群 提交于 2020-12-29 05:21:55
反序列化(不推荐版): 两个字段 一个为正序准备,一个为反序准备 重写create update方法 1 . 确定数据结构: 自己定义key book_obj = { " title " : " 语文sadasd " , " pub_time " : " 2018-11-14 " , " post_category " : 2 , " publisher_id " : 1 , " authors_list " : [1, 2 ] } 2 . 序列化器: 注意外键,多对多,多选需要反序列化,其余不用 正序和反序列化字段不统一: 1. 注意id 只序列化不走校验(required= False) id = serializers.IntegerField(required= False) 2 . 注意选择 # 正序用 category = serializers.CharField(source= " get_category_display " , read_only= True) # 只能反序用 新增分类 post_category = serializers.IntegerField(write_only= True) 3 . 注意外键 publisher = PublisherSerializer(read_only= True) publisher_id =

DRF序列化和反序列化(二:ModelSerializer)

你离开我真会死。 提交于 2020-12-25 10:24:02
一: rest_framework 中 serializers.Serializer的不方便之处(以下简称Serializer) a:需要定义每一个字段,并且这个字段是和models字段及其类似。 b:和froms是不是很像,有没有类似ModelFroms类似的模块,简化字段的编写,当然有ModelSerializer就是这中类型 二:ModelSerializer序列化 a:view中的文件不需要修改 b:重新编写BookSerializers继承serializers.ModelSerializer --model 指定哪一个model --fields 表示需要序列化的字段,"__all__"全部字段 --depth 向下查找一层。指对外键关系会继续遍历外键对象的全部属性。(但是如果外键表字段过多,而前端需要的字段并不是很多,使用起来会不方便。所以常常不用) class BookSerializers(serializers.ModelSerializer): class Meta: model = Book # fields=['title','category','publisher','authon'] #可以对字段进行排序 fields="__all__" #所有的字段,但是无序 depth=1 #向下查找一层 c:对部分字段,如外键,choices字段

界面编程之QT的Socket通信20180730

删除回忆录丶 提交于 2020-11-30 05:44:23
/*******************************************************************************************/ 一、linux下的tcp通信过程 其中bind绑定,会固定一个端口,否则是随机的。 一个链接是由双方的ip和端口组成的,固定端口保证源的不变性, 这样另一端在任何时候访问的目的都是一致的,也可以说这个端口提供了什么服务。 同时绑定后直接操作socket id就可以操作对应的链接了。 /*******************************************************************************************/ 二、QT下的TCP通信过程 Qt中提供的所有的Socket类都是非阻塞的。 Qt中常用的用于socket通信的套接字类: QTcpServer 用于TCP/IP通信, 作为服务器端套接字使用 QTcpSocket 用于TCP/IP通信,作为客户端套接字使用。 QUdpSocket 用于UDP通信,服务器,客户端均使用此套接字。 1.QT下的服务端 1).socket函数变为QTcpServer 2).bind ,listen 统一为listen 同时没有accept,当有一个链接过来的时候,会产生一个信号:newconnection

使用详解|KEPServerEX 6 之 Torque Tool Ethernet 驱动(中文版)

我怕爱的太早我们不能终老 提交于 2020-11-28 00:58:41
转矩工具以太网驱动程序(中文版) Kepware - Torque Tool Ethernet Driver 编制:雲飛兄 Kepware QQ 群:905485143 2020-08-13 目录 目录 2 转矩工具以太网驱动程序 4 概述 4 设备设置 - Device Setup 5 通信参数-Communications Parameters 5 设置-Settings 6 优化通信 - Optimizing Communications 7 数据类型说明 - Data Types Description 9 地址说明 - Address Descriptions 10 消息ID-Message IDs 10 命令集:报警- Alarm 12 命令集:自动禁用设置- Auto-Disable Settings 12 命令集:Flash 12 命令集:标识符- Identifiers 12 命令集:作业信息- Job Info 13 命令集:作业编号数据- Job Number Data 14 命令集:上次拧紧结果- Last Tightening Results 14 命令集:多轴结果- Multi Spindle Results 17 命令集:旧的拧紧结果- Old Tightening Results 18 命令集:参数集数据- Parameter Set Data 21

KEPServerEX 6 之 Torque Tool Ethernet 驱动(中文版)

こ雲淡風輕ζ 提交于 2020-08-16 17:27:31
转矩工具以太网驱动程序(中文版) Kepware - Torque Tool Ethernet Driver 编制:雲飛兄 Kepware QQ 群:905485143 2020-08-13 目录 目录 2 转矩工具以太网驱动程序 4 概述 4 设备设置 - Device Setup 5 通信参数 - Communications Parameters 5 设置 - Settings 6 优化通信 - Optimizing Communications 7 数据类型说明 - Data Types Description 9 地址说明 - Address Descriptions 10 消息ID - Message IDs 10 命令集:报警 - Alarm 12 命令集:自动禁用设置 - Auto-Disable Settings 12 命令集:Flash 12 命令集:标识符 - Identifiers 12 命令集:作业信息 - Job Info 13 命令集:作业编号数据 - Job Number Data 14 命令集:上次拧紧结果 - Last Tightening Results 14 命令集:多轴结果 - Multi Spindle Results 17 命令集:旧的拧紧结果 - Old Tightening Results 18 命令集:参数集数据 -

53.Qt-QPdfWriter绘制PDF,支持表单输出

感情迁移 提交于 2020-08-13 02:22:33
之前打印PDF都是通过html形式来实现的,但是这次要做的东西,需要打印界面控件,所以需要使用QPdfWriter. 通过QPdfWriter来获取QPainter对象,就能实现在PDF上来画画啦. 代码生成的PDF如下所示: 代码效果如下所示: 代码如下所示: //通过dialog来保存PDF路径 QString mainWindow::pdfSaveAs(QString fileName) { QString file = "" ; file = QFileDialog::getSaveFileName ( this , // 父组件 " 另存为 " , // 标题 QString( " %1/%2 " ).arg(QStandardPaths::writableLocation(QStandardPaths::DesktopLocation)).arg( "" +fileName+ " .pdf " ), // 设置路径, .表示当前路径,./表示更目录 " PDF文件 " , // 过滤器,保存的类型 Q_NULLPTR, QFileDialog::ShowDirsOnly); return file; } // y:表单的Y坐标 // horzBorder:水平外边距,写0表示没有边距 // row,column:行数和列数 // unitHeight:单元高度 //

Qt开源作品22-运行时间记录类

拜拜、爱过 提交于 2020-08-11 12:23:33
一、前言 在早期开发的软件中,尤其是初学者入门者写的软件,软件运行久了,难免遇到意外崩溃的时候,可是大部分的运行设备可能在现场客户那,需要记住每一次从软件启动后到软件意外关闭前的运行时间,需要记录的信息包括:编号+开始时间+结束时间+已运行时间,每次完整的运行过程只产生一条记录,每次运行时间改变以后更新当前这条记录即可。这样就可以确切的了解到软件在现场的真实运行情况是否糟糕,如果没有这个记录(当然可以选择记录存储到数据库),程序又重启恢复了,也不知道到底每次运行了多久,从几点到几点。为了写的简单点,不干扰原有的数据库文件,我一般选择输出到文本文件。 主要功能: 可以启动和停止服务,在需要的时候启动。 可以指定日志文件存放目录。 可以指定时间日志输出间隔。 可以单独追加一条记录到日志文件。 日志为文本格式,清晰明了。 二、代码思路 void SaveRunTime::getDiffValue(const QDateTime &startTime, const QDateTime &endTime, int &day, int &hour, int &minute) { qint64 sec = startTime.secsTo(endTime); day = hour = minute = 0; int seconds = 0; while (sec > 0) { seconds++

Qt使用QNetworkAccessManager获取FTP文件函数

自闭症网瘾萝莉.ら 提交于 2020-08-05 17:17:12
void Mystack::getFtpImg(QString ftpFilePath, QString curFileName ) { QNetworkAccessManager * myNetworkManager = new QNetworkAccessManager( this ); QNetworkRequest myNetworkRequest; QNetworkReply * myNetworkReply; QFile * downloadedFile = new QFile( " ./ " + curFileName); downloadedFile -> open(QIODevice::WriteOnly); QUrl url; url.setScheme( " ftp " ); url.setUserName(config.getSet() ->value( " FTP_USER_NAME " ).toString()); url.setPassword(config.getSet() ->value( " FTP_PASS_WORD " ).toString()); url.setHost(config.getSet() ->value( " FTP_HOST " ).toString()); url.setPort(config.getSet() -

C# 中Bitmap图像处理含增强对比度的三种方法

二次信任 提交于 2020-08-04 14:31:41
Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色. 2. PixelFormat属性:返回图像的像素格式. 3. Palette属性:获取和设置图像所使用的颜色调色板. 4. Height Width属性:返回图像的高度和宽度. 5. LockBits方法和UnlockBits方法:分别锁定和解锁系统内存中的位图像素.在基于像素点的图像处理方法中使用LockBits和UnlockBits是一个很好的方式,这两种方法可以使我们指定像素的范围来控制位图的任意一部分,从而消除了通过循环对位图的像素逐个进行处理,每调用LockBits之后都应该调用一次UnlockBits. BitmapData类 BitmapData对象指定了位图的属性 1. Height属性:被锁定位图的高度. 2. Width属性:被锁定位图的宽度. 3. PixelFormat属性:数据的实际像素格式. 4. Scan0属性:被锁定数组的首字节地址,如果整个图像被锁定,则是图像的第一个字节地址. 5. Stride属性:步幅,也称为扫描宽度. 这里要重点说说Stride属性