当前位置: 首页 > article >正文

python serializer, model drf通过序列化器, 模型获取mysql 一张表某个字段数据库现存的最大值

需求, 我想获取pbr_config这张表seq_num 意为序号最大值

核心代码如下:

方法一:

        max_seq_num = PolicyRoutingConfig.objects.aggregate(Max('seq_num'))['seq_num__max']  # 获取数据库最大序号 无数据时返回{'seq_num__max': None}
        request.data['seq_num'] = max_seq_num + 1 if max_seq_num else 1  # 若为None,则从1开始

用到了Max函数, 需要导入

from django.db.models import  Max依赖

方法二:

policy = PolicyRoutingConfig.objects.all().order_by('-seq_num').first()
max_seq_num = policy.seq_num
sqe_num = max_seq_num + 1  if max_seq_num else 1
seq_num = policy.seq_num + 1  # 新建这一条策略的序号
# serializer.validated_data['seq_num'] = seq_num

# serializer.save()

model模型核心代码

from django.db import models
class PolicyRoutingConfig(models.Model):
    """策略路由"""
    pbr_id = models.AutoField(auto_created=True, primary_key=True, blank=True, serialize=False, help_text='策略路由序号即数据库自增id')
    seq_num = models.IntegerField(blank=True, help_text='拖拽相关参数, 序号')
    src_addr = models.CharField(max_length=64, help_text='源地址,默认any,可选择地址对象和地址组或手动输入ip/mask')
    dst_addr = models.CharField(max_length=64, help_text='目的地址,默认any,可选择地址对象和地址组或手动输入ip/mask')
    service = models.CharField(max_length=64, help_text='服务, 默认any,可选择服务和服务组')
    gateway_addr = models.CharField(max_length=64, help_text='网关地址')
    gateway_weight = models.IntegerField(default=1, help_text='网关的权重值')
    gateway_interface = models.CharField(max_length=64, help_text='网关关联的接口名称')
    priority = models.IntegerField(default=1, help_text='优先级')
    enable = models.IntegerField(help_text='是否启用 0:关闭 1:启用')

    class Meta:
        managed = True
        db_table = 'pbr_config'
        app_label = 'netset'

序列化器类核心代码

from rest_framework import serializers
from netset.models import PolicyRoutingConfig

class PolicyRoutingSerializer(serializers.ModelSerializer):
    """策略路由配置"""
    class Meta:
        model = PolicyRoutingConfig
        fields = ('pbr_id', 'seq_num', 'src_addr', 'dst_addr', 'service', 'gateway_addr', 'gateway_weight',
                  'gateway_interface', 'priority', 'enable')

 


http://www.kler.cn/a/402772.html

相关文章:

  • CLIP-Adapter: Better Vision-Language Models with Feature Adapters 论文解读
  • C++初阶(十五)--STL--list 的深度解析与全面应用
  • 使用timm库加载模型与模型权重
  • OCR-free Document Understanding Transformer
  • 3D Gaussian Splatting在鱼眼相机中的应用与投影变换
  • 失落的Apache JDBM(Java Database Management)
  • UE5 第一人称射击项目学习(三)
  • SSM全家桶 1.Maven
  • 联邦学习安全聚合算法综述(论文解析)以及如何确定自己研究方向的方法
  • 高频面试-cookie, token, session
  • Feed流系统重构:架构篇
  • 力扣整理版八:回溯算法(待更新)
  • 3C产品说明书电子化转变:用户体验、环保与商业机遇的共赢
  • 使用 Oracle.DataAccess.Client 驱动 和 OleDB 调用Oracle 函数的区别
  • 【JAVA】Java基础—面向对象编程:常用API与数据结构—集合框架(List、Set、Map等)
  • 【Leecode】Leecode刷题之路第56天之合并区间
  • git创建远程仓库,以gitee码云为例GitHub同理
  • Go 1.23 is released(翻译)
  • c语言数据结构与算法--简单实现线性表(顺序表+链表)的插入与删除
  • pcap_set_timeout()函数
  • 文件 IO:高效读取文件的一些注意事项
  • SQL面试题——复杂窗口定义
  • 【机器学习chp5】线性回归
  • 【Python】30个Python爬虫的实战项目!!!(附源码)
  • 蓝牙电话-如何自动切换手机SIM卡(预研方向)
  • 985研一学习日记 - 2024.11.17