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')
相关推荐
万事大吉CC15 分钟前
SQL语法基础教程
数据库·oracle
闭着眼睛学算法26 分钟前
【双机位A卷】华为OD笔试之【排序】双机位A-银行插队【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·javascript·c++·python·算法·华为od
betazhou32 分钟前
Oracle dgbroker常规命令管理简介
数据库·oracle·adg·dbbroker
Pocker_Spades_A38 分钟前
Python快速入门专业版(五十四):爬虫基石:HTTP协议全解析(从请求到响应,附Socket模拟请求)
爬虫·python·http
DoubleKK1 小时前
Python 中的 json_repair 使用教程:轻松修复大模型返回的非法 JSON
python
海边夕阳20061 小时前
PostgreSQL性能调优:解决表膨胀、索引碎片和无效索引问题
数据库·经验分享·postgresql·性能优化
IT教程资源C1 小时前
(N_083)基于springboot毕业设计管理系统
mysql·springboot毕业管理
一 乐2 小时前
个人理财系统|基于java+小程序+APP的个人理财系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·后端·小程序
m0_748248022 小时前
Redis的数据淘汰策略解读
数据库·redis·缓存
萧鼎2 小时前
深入掌握 OpenCV-Python:从图像处理到智能视觉
图像处理·python·opencv