问题描述
我正在上传 .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
如果这没有帮助,请澄清问题。