如何在resource.py中检查执行字段验证?

问题描述

我正在上传 .xls 文件,需要在将其保存到模型/数据库之前检查以下条件。 要求: 1.如何计算总行数并将其与某个值进行比较,如果len(row)。 2. 如何在 1 天内重置计数变量。 resource.py

class CTSResource(resources.ModelResource):
   class Meta:
      Model=CTA
   def before_import(self,dataset,using_transactions,dry_run,**kwargs):
      --Logic code---
      --Logic code---

我正在尝试在我的 views.py 文件中的文件处理级别实现它,如下所示。

def CTA_upload(request):
    try:
        if request.method == 'POST':
            movie_resource = CTAResource()
            ##we will get data in movie_resources####
            dataset = Dataset()
            new_movie = request.FILES['file']
            if not new_movie.name.endswith('xls'):
                messages.info(request,'Sorry Wrong File Format.Please Upload valid format')
                return render(request,'app/uploadinfo.html')
            messages.info(request,'Uploading Data Line by Line...')
            imported_data = dataset.load(new_movie.read(),format='xls')
            count = 1
            for data in imported_data:
                value = CTA(
                    data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7],data[8],)
                count = count + 1
                value.save()
                # messages.info(request,count)
            # time.sleep(1)
            messages.info(request,'File Uploaded Successfully...')
            
    except:
        messages.info(request,'Same Email ID has been observed more than once.Except that other records has been added../nPlease Make sure Email field should be unique.')
    
    return render(request,'app/cta.html')

解决方法

不确定我是否理解问题,但您可以按如下方式轻松检查行数:

class MyResource(BookResource):
    some_count = 1

    def before_import(self,dataset,using_transactions,dry_run,**kwargs):
        if len(dataset) == self.some_count:
            print("same len")
        # you can add extra logic here to persist the count to some table

如果这没有帮助,请澄清问题。