一  使用环境

  开发系统: windows

  IDE: pycharm  

  数据库: msyql,navicat

  编程语言: python3.7  (Windows x86-64 executable installer)

  虚拟环境: virtualenvwrapper

  开发框架: Django 2.2

二 Django Admin 在内联中覆盖保存方法(admin.TabularInline)

1.在你的app下新建一个py文件: inlineforms.py

from django.forms.models import BaseInlineFormSet
from A001jcxx.models import CompanyEmail # django admin在内联中覆盖保存方法
# 级联企业邮箱自动增加编号
class CompanyEmailFormset(BaseInlineFormSet):
def save_new(self, form, commit=True):
obj = super(CompanyEmailFormset, self).save_new(form, commit=False)
# 在这里你可以从请求中添加任何你需要的东西
ret = CompanyEmail.objects.exists() # 判段表中有值没有
if not ret:
number = 'EM0001'
else:
邮箱编号 = CompanyEmail.objects.last().邮箱编号 # 取最后一条人员编号
number = 'EM' + str(int(邮箱编号[2:]) + 1).zfill(4)
obj.邮箱编号 = number
commit = True
if commit:
obj.save()
return obj

2.在admin.py你的内联类中,也可以继也没有(admin.StackedInline),这样内联表的显示方式就不样,一个字段横着排列,一个是竖着提列.

# 03-01级联企业邮箱(单独创建class,继承TabularInline)
class EmailInline(admin.TabularInline):
model = CompanyEmail # 关联的表
extra = 1 # 增加时默认增加几个邮箱
exclude = ('删除标记', '邮箱编号') # 不显示字段
formset = CompanyEmailFormset # 增加编号设置 # 增加编号方法
def get_formset(self, request, obj=None, **kwargs):
formset = super(EmailInline, self).get_formset(request, obj, **kwargs)
formset.request = request
return formset

说明:

我要在企业表中内联编辑对应的一对多邮箱表,邮箱表中的邮箱编号是自动生成的,这个方法就是在内联表中执行自动生成并保存到数据库的方法.

1.增加时,隐藏了'邮箱编号',如果不用方法,手动写就可以在邮箱表中保存.

2.增加后到邮箱表中查看,"邮箱编号"就会自动生成EM0001,如果不用内联覆盖保存方法,此时"邮箱编号"就会是空.

Django Admin 在内联中覆盖保存方法(admin.TabularInline)的更多相关文章

  1. django中将views.py中的python方法传递给html模板文件

    常规的模板渲染 from django.db import models # Create your models here. class ArticalType(models.Model): cap ...

  2. Django 向数据表中添加字段方法

    在模型order中添加字段discount字段,并给予初始值0 方法: 先在models.py中修改模型 添加 discount = models.DecimalField(max_digits=8, ...

  3. django学习-20.python3中的特殊方法【__str__】的作用

    目录结构 1.前言 2.[__str__]特殊方法的具体使用 2.1.当使用print打印一个类被实例化后生成的对象的时候,若类里有定义了[__str__]特殊方法,是打印出这样的数据:[__str_ ...

  4. java中的hashcode方法作用以及内存泄漏问题

    本文装载:http://hi.baidu.com/iduany/item/6d66dfc9d5f2da1650505870 hashCode()方法的作用&使用分析 一直以来都想写篇文章来说明 ...

  5. Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法

    Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法 一丶ORM常用字段 ...

  6. django的admin或者应用中使用KindEditor富文本编辑器

    由于django后台管理没有富文本编辑器,看着好丑,展示出来的页面不美观,无法做到所见即所得的编辑方式,所以我们需要引入第三方富文本编辑器. 之前找了好多文档已经博客才把这个功能做出来,有些博客虽然写 ...

  7. Quartus II中FPGA的管脚分配保存方法

    一.摘要 将Quartus II中FPGA管脚的分配及保存方法做一个汇总. 二.管脚分配方法 FPGA 的管脚分配,除了在QII软件中,选择“Assignments ->Pin”标签(或者点击按 ...

  8. quartus2中FPGA管脚分配保存方法(转)

    一.摘要 将Quartus II中FPGA管脚的分配及保存方法做一个汇总. 二.管脚分配方法 FPGA 的管脚分配,除了在QII软件中,选择“Assignments ->Pin”标签(或者点击按 ...

  9. Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法

    Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法 2018/11/06 Chenxin 资料说明 Django基础入 ...

随机推荐

  1. 关于.NET中迭代器的实现以及集合扩展方法的理解

    在C#中所有的数据结构类型都实现IEnumerable或IEnumerable<T>接口(实现迭代器模式),可以实现对集合遍历(集合元素顺序访问).换句话可以这么说,只要实现上面这两个接口 ...

  2. cloudera manager server迁移

    一.迁移背景 服务器出了问题,导致整个cm server界面呈现出不可用的状态,也就是获取不到各个大数据组件以及主机相关的状态的信息,整个cm server的前端界面处于瘫痪的状态,不可用,刚开始怀疑 ...

  3. vue-cli3移动端自适应配置 Vant组件库

    module.exports = { presets: [ '@vue/app' ], plugins: [ ['import', { libraryName: 'vant', libraryDire ...

  4. 2019牛客暑期多校训练营(第二场)D Kth Minimum Clique(第k团)

    题意:给你n个点 求第k小的团 思路:暴力bfs+bitset压位 #include <bits/stdc++.h> using namespace std; const int N = ...

  5. poj 2007 凸包构造和极角排序输出(模板题)

    Scrambled Polygon Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10841   Accepted: 508 ...

  6. IIS Web API 长时间不连接后第一次访问非常缓慢

    搭建在 IIS 上的 Web API 若长时间不访问,会出现第一次访问耗时较长的现象,这与其调用应用程序池的 Idle Time-out(minutes) 即闲置超时设置有关.默认值为20,修改为0即 ...

  7. Zabbix 微信监控报警

    Zabbix-Server 设置 # 使脚本目录生效 [root@zabbix ~]# grep 'script' /etc/zabbix/zabbix_server.conf # AlertScri ...

  8. Nginx location相关配置说明

    Nginx location相关配置说明       基于不同的IP.不同的端口以及不用得域名实现不同的虚拟主机,依赖于核心模块ngx_http_core_module实现. 新建PC web站点 [ ...

  9. hdu1228双指针

    #include <iostream> #include <cstdio> #include <cstring> using namespace std; char ...

  10. Linux 驱动框架---i2c驱动框架

    i2c驱动在Linux通过一个周的学习后发现i2c总线的驱动框架还是和Linux整体的驱动框架是相同的,思想并不特殊比较复杂的内容如i2c核心的内容都是内核驱动框架实现完成的,今天我们暂时只分析驱动开 ...