【Django-CI系统】管理后台批量导入User模型和EmployeeUser模型-20220514

管理后台批量导入User模型和EmployeeUser模型

其中User模型和EmployeeUser模型是1VS1关系。
在这里插入图片描述
在这里插入图片描述

utils.py先新增User模型,再新增EmployeeUser模型

from openpyxl import Workbook,load_workbook
from openpyxl.utils import get_column_letter
from .models import *


# 批量上传User和EmployeeUser
# 没有完工,先做echarts看板
def import_EmployeeUser(self, request, obj, change):


    wb = load_workbook(filename=obj.file.path)
    ws = wb.get_sheet_names()
    ws = wb.get_sheet_by_name(ws[0])
    max_row = ws.max_row
    headers = ['username', 'password', 
            'department', 'employeename','employeeid','title','role', 'score_ci','score_total','score_used','score_left',]
    lists = []
    for row in range(2, max_row+1):
        r = {}
        for col in range(1, len(headers) + 1):
            key = headers[col - 1]
            r[key] = ws.cell(row=row, column=col).value
        lists.append(r)
    print('lists',lists)
    sqllist = []

    # 新增user模型
    for cell in lists:
        username = cell['username']
        password = cell['password']
        sql = User.objects.get_or_create(
                    username = username,
                    password=password,
                )


    # 新增EmployeeUser模型
    for cell in lists:
        username = cell['username']
        password = cell['password']
        department = cell['department']
        employeename = cell['employeename']
        employeeid = cell['employeeid']
        title = cell['title']
        role = cell['role']
        score_ci = cell['score_ci']
        score_total = cell['score_total']
        score_used = cell['score_used']
        score_left = cell['score_left']
        user = User.objects.get(username = username,password = password)
        sql = EmployeeUser(
                    user = user,
                    department=department,
                    employeename=employeename,
                    employeeid=employeeid,
                    title=title,
                    role=role,
                    score_ci=score_ci,
                    score_total=score_total,
                    score_used=score_used,
                    score_left=score_left,
                )
        sqllist.append(sql)
    print('sqllist',sqllist)
    EmployeeUser.objects.bulk_create(sqllist)

    print('上传成功')

namelist.xlsx

在这里插入图片描述

models.py

class EmployeeUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,related_name='employeeuser')
    department = models.CharField(blank=True, null=True,choices=DEPT_TYPE, max_length=100, verbose_name=u'部门')
    employeename = models.CharField(max_length=135, blank=True, null=True,verbose_name=u'姓名')
    employeeid = models.CharField(max_length=135, blank=True, null=True,verbose_name=u'工号')
    title = models.CharField(blank=True, null=True,max_length=100, verbose_name=u'职务')
    role = models.CharField(blank=True, null=True,max_length=100, choices=ROLE_TYPE,verbose_name=u'角色')
    score_ci = models.IntegerField(blank=True, null=True, default=0, verbose_name=u'CI调整的积分')
    score_total = models.IntegerField(blank=True, null=True, default=0, verbose_name=u'共获取的积分')
    score_used = models.IntegerField(blank=True, null=True, default=0, verbose_name=u'已使用的积分')
    score_left = models.IntegerField(blank=True, null=True, default=0, verbose_name=u'剩余积分')

    class Meta:
        verbose_name = u'员工和积分'
        verbose_name_plural = u'员工和积分'

    def __str__(self):
        return self.user.username + "拓展信息"




# 定义后台上传文件的接口
class Import_EmployeeUser(models.Model):
    file = models.FileField(upload_to='file')
    name = models.CharField(max_length=50,verbose_name=r'文件名')

    class Meta:
        ordering = ['name']

    def __str__(self):
        return self.name

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值