以下代码怎么修改才能达到不重代码呢?

<p>一有个小工具,通过excel批量度入到数所库中,但发现重复代码比较多 先上两个model</p> <pre class="codehilite">class Classification(models.Model): title = models.CharField(verbose_name="类别名称", max_length=32)

def __str__(self):
    return self.title

class Department(models.Model): dep_name = models.CharField(verbose_name="部门名称", max_length=32)</pre>

<p>然后在上一个工具/utils/import_excel.py</p> <pre class="codehilite">import xlrd

def import_excel(file):

wb = xlrd.open_workbook(filename=None, file_contents=file.read())
table = wb.sheets()[0]
nrows = table.nrows
return table,nrows</code>&lt;/pre&gt;

<p>在上两个views视图, 问题1.在这两个视图中就中人有生成queryset的地方不一样,其他代码是一样的,我应该怎么处理?而</p> <pre class="codehilite"> from django.shortcuts import render, redirect, HttpResponse, reverse from django.db import transaction from faa import models from utils import import_excel

def classification(request): if request.method == "POST": file = request.FILES excel = file['excel'] model_obj = [] table, nrows = import_excel.import_excel(excel) try: with transaction.atomic(): for i in range(0, nrows): obj = models.Classification(title=table.row_values(i)[0]) model_obj.append(obj) models.Classification.objects.bulk_create(model_obj) except Exception as e: return HttpResponse('出现错误...%s' % e) return redirect(reverse("faa:cl_list")) return render(request, "import/import.html")

    def department(request):
if request.method == &quot;POST&quot;:
    file = request.FILES
    excel = file['excel']
    model_obj = []
    table, nrows = import_excel.import_excel(excel)
    try:
        with transaction.atomic():
            for i in range(0, nrows):
                obj = models.Classification(dep_name=table.row_values(i)[0])
                model_obj.append(obj)
            models.Classification.objects.bulk_create(model_obj)
    except Exception as e:
        return HttpResponse('出现错误...%s' % e)
    return redirect(reverse(&quot;faa:cl_list&quot;))
return render(request, &quot;import/import.html&quot;)</code>&lt;/pre&gt;

评论 0