栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【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 + "拓展信息"

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883319.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号