首页 > 其他分享 >django更多关联模型使用import-export导入

django更多关联模型使用import-export导入

时间:2023-02-11 15:23:10浏览次数:50  
标签:name models django course export factor import True verbose

再次用import-export导入一个模型

创建模型

创建Course_real模型,修改app的models.py,,为实际开课信息,其中主要难点在计算字段的设置,用函数定义了work_load字段,但是其调用存在一定问题,因此有设置了一个work_load_cul字段,并调用property(work_load)函数,才能取到正确的计算字段值。
Course_real模型与teacher模型进行外键关联ForeignKey。

class Course_real(models.Model):  
	teacher = models.ForeignKey(Teacher, blank=True, null=True, on_delete=models.CASCADE, verbose_name='教师')  
    course = models.CharField(max_length=40,verbose_name="课程名称")  
    classes = models.CharField(blank=True,null=True,max_length=200,verbose_name="上课班级")  
    period = models.CharField(blank=True,null=True,max_length=30,verbose_name="学期")  
    course_time = models.FloatField(blank=True,null=True,verbose_name="学时数J")  
    benefit_factor = models.FloatField(blank=True,null=True,verbose_name="效益系数R")  
    course_type_factor = models.FloatField(blank=True,null=True,verbose_name="课程类别系数K")  
    course_target_factor = models.FloatField(blank=True,null=True,verbose_name="教学对象系数S")  
    practice = models.CharField(blank=True,null=True,max_length=2,verbose_name="是否为集中实践")  
    stu_nums = models.IntegerField(blank=True,null=True,verbose_name="学生人数")  
    practice_weeks = models.FloatField(blank=True,null=True,verbose_name="实习周数J")  
    
    def work_load(self):  
        work_load = 0.0  
		if self.practice == '是':  
            work_load = round(( 1 + ( self.stu_nums - 15 ) * 0.05 ) * self.practice_weeks,1)  
        elif self.practice == '否':  
            work_load = round(self.course_time * self.benefit_factor * self.course_type_factor * self.course_target_factor,1)  
        return work_load  
    work_load.short_description = "工作量"  
	work_load_cul = property(work_load)  
  
    def __str__(self):  
        return self.course  
  
    class Meta:  
        unique_together = ("teacher", "course", "classes","period")  
        verbose_name = "开课信息"  
        verbose_name_plural = verbose_name

修改app内的resources.py文件

增加 Course_real 模型的import-export资源类

class CourseRealResource(resources.ModelResource):  
    teacher = Field(attribute="teacher", column_name="教师", widget=ForeignKeyWidget(Teacher, 'name'))  
    course = Field(attribute='course', column_name='课程名称')  
    classes = Field(attribute='classes', column_name='上课班级')  
    period = Field(attribute='period', column_name='学期')  
    course_time = Field(attribute='course_time', column_name='学时数J')  
    benefit_factor = Field(attribute='benefit_factor', column_name='效益系数R')  
    course_type_factor = Field(attribute='course_type_factor', column_name='课程类别系数K')  
    course_target_factor = Field(attribute='course_target_factor', column_name='教学对象系数S')  
    practice = Field(attribute='practice', column_name='是否为集中实践')  
    stu_nums = Field(attribute='stu_nums', column_name='学生人数')  
    practice_weeks = Field(attribute='practice_weeks', column_name='实习周数J')  
 
    class Meta:  
        model = Course_real  
        import_id_fields = ['teacher', 'course', 'classes', 'period',]

修改app的admin.py

在后台添加 Course_real 模型导入导出功能

class CourseRealAdmin(ImportExportModelAdmin):  
    resource_class = CourseRealResource  
    list_display = ['id', 'teacher', 'course', 'classes', 'course_time', 'practice', 'stu_nums', 'practice_weeks',  
  'work_load_cul']  
    ordering = ["id", ]  
 
 
admin.site.register(Course_real, CourseRealAdmin)

并且引入相应类,包括Course_real和CourseRealResource

迁移数据

python manage.py makemigrations
python manage.py migrate

批量读入excel课程信息

登录管理员用户
导入课程信息

标签:name,models,django,course,export,factor,import,True,verbose
From: https://www.cnblogs.com/codetour/p/17111745.html

相关文章

  • Python引入模块报错:Import "openai" could not be resolvedPylancereportMissingImpor
    复制Openai的代码进行测试的时候,发生:Import"openai"couldnotberesolvedPylancereportMissingImports  以为是安装问题,检查安装,发现没有这个模块: 直接进行......
  • Day 89 Django_视图封装 & 路由 & 版本控制组件
    视图封装model.py文件fromdjango.dbimportmodels#Createyourmodelshere.classBook(models.Model):title=models.CharField(max_length=32,verbo......
  • Django的生命周期
    目录Django的请求生命周期Django视图层视图函数的编写视图函数执行过程Django模板层模板层与视图层交互模板语法变量过滤器标签模板继承Django的请求生命周期所谓Django......
  • Django 含有外键模型新增数据以及序列化
    https://www.cnblogs.com/SunshineKimi/p/14042914.htmlDjango原生实现外键classAppleModel(models.Model):id=models.AutoField(primary_key=True)app_name......
  • Django-ORM
    ORM由来让我们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。几乎所有的软件开发过程中都会涉及到对象和关系数据库。在用户层面和业务逻辑层面,......
  • docker搭建django+mysql
    1.本机项目迁移到linux系统中2.编写dockerfile内容如下 WOEKDIR 在容器中创建该目录COPY 复制本机当前目录下的requirements.txt文件 到容器drfproject......
  • 页面导入样式时,使用link和@import有什么区别?
    1.从属关系区别@import是CSS提供的语法规则,只有导入样式表的作用;link是HTML提供的标签,不仅可以加载CSS文件,还可以定义RSS、rel连接属性等。2.加载顺序区别加载页......
  • Linux export environment variables & dotenv read .env file All In One
    Linuxexportenvironmentvariables&dotenvread.envfileAllInOneNode.jsprocess.envoverridebugterminalcommandoverride.envfilebugwhythetermi......
  • Django生命请求周期
    Django的请求生命周期所谓Django的请求生命周期,直白的来说就是当请求来的时候和请求走的阶段中,Django的执行轨迹。一个完整的Django生命周期:用户从客户端发出一条请求以......
  • windows搭建django开发环境
    windows如何搭建django开发环境pycharm搭建django运行环境虚拟环境搭建前置条件,下载安装python如3.11.1下载安装pycharm社区版下载安装git在gitee上新建用户,搭建......