Django 文件上载数据

Django 文件上载数据,django,django-models,Django,Django Models,我有一个excel文件,其中有各种列和行。我上传这个文件并保存数据 在数据库中。但我遇到了一个问题,需要帮助解决此问题:- 1) 上载名称相同但内容不同的文件上载以前的文件数据 假设我上传了3行的abc.xls,它上传了3行,但是如果我上传了另一个10行的文件,它显示了之前上传的文件的结果,并且只显示了3个结果 我尝试了像这样的唯一文件,但我没有这样的文件或目录 # Models.py class ExcelFile(models.Model): excel_file

我有一个excel文件,其中有各种列和行。我上传这个文件并保存数据 在数据库中。但我遇到了一个问题,需要帮助解决此问题:-

1) 上载名称相同但内容不同的文件上载以前的文件数据

假设我上传了3行的abc.xls,它上传了3行,但是如果我上传了另一个10行的文件,它显示了之前上传的文件的结果,并且只显示了3个结果

我尝试了像这样的唯一文件,但我没有这样的文件或目录

# Models.py
    class ExcelFile(models.Model):

        excel_file = models.FileField(upload_to='documents/')
        class Meta:
            verbose_name = 'ExcelFile'
            verbose_name_plural = 'ExcelFiles'


        def __unicode__(self):
            return self.excel_file.name
在管理中,我看到文件已经是唯一的,比如abc_1.xls、abc_2.xls等等。 这是我的密码

   #views.py
   if request.method == "POST":
            form_data = ImportExcelForm(request.POST, request.FILES)
            if form_data.is_valid():
                cd = form_data.cleaned_data
                file_obj, created = ExcelFile.objects.get_or_create(excel_file=cd['excel_file'])
                try:
                    data_list = excel_parser(cd['excel_file'].name.replace(" ", "_"))
                except:
                    data_list = excel_parser(get_correct_filename(cd['excel_file']))
########### and so on #######################

def get_correct_filename(filename):
    replacements = {"(": "", ")": ""," ":"_"}
    new_file = "".join(replacements.get(c, c) for c in filename.name)
    return new_file


def excel_parser(filename):
    """
    Excel file will first come here. It will be read sheetwise.
    This functions will return a data list.
    """

    file_path = settings.MEDIA_ROOT + 'documents/' + filename
    #Here it is reading abc.xls only as the filename is abc.xls
    book = open_workbook(file_path)
    data_list = []
    sheet_list = []

    total_sheets = book.nsheets
    for sheet in range(total_sheets):
        sheet_counter = book.sheet_by_index(sheet)
        data_list = extract_data(book,sheet)
        sheet_list.append(data_list)
    return sheet_list

您必须将目录“uploads/logos”创建到媒体目录中。您可以手动或自动执行此操作:


您如何处理上传?您现在可以看到我的代码了,它选择了相同的文件,尽管它正在上传已创建的dbDirectory上的唯一文件。一切正常,但问题是,如果我上传两次文件名相同的a文件,它会选择上一个文件。您是否在设置文件中设置了媒体根变量?实际上,您不需要创建任何媒体文件夹。Django将根据需要自动创建它们。