Python 如何使用Django检查TSV/CSV格式的数据(非扩展)

Python 如何使用Django检查TSV/CSV格式的数据(非扩展),python,html,django,Python,Html,Django,在mymodels.py中,我有以下CharField class Method1(models.Model): inputfile_param = models.FileField() 我希望我的web应用程序检查输入文件的以下条件: 检查输入文件是否为TSV、CSV或Excel格式 输入文件的第一列和第二列不应为数字格式。 (不包括课程标题) 使用Django/Python是否有一种优雅的方法来实现这一点?您可以在文件字段中添加一个自定义项,您可以在其中执行这些检查。大

在mymodels.py中,我有以下CharField

class Method1(models.Model):
    inputfile_param     = models.FileField()
我希望我的web应用程序检查输入文件的以下条件:

  • 检查输入文件是否为TSV、CSV或Excel格式

  • 输入文件的第一列和第二列不应为数字格式。 (不包括课程标题)

使用Django/Python是否有一种优雅的方法来实现这一点?

您可以在
文件字段中添加一个自定义项,您可以在其中执行这些检查。大致如下:

import csv
from django.core.exceptions import ValidationError


def validate_csv(value):
    # Probably worth doing this check first anyway
    if not value.name.endswith('.csv'):
        raise ValidationError('Invalid file type')

    with open(value.file, 'r') as csvfile:
        try:
            csvreader = csv.reader(csvfile)
            # Do whatever checks you want here
            # Raise ValidationError if checks fail
        except csv.Error:
            raise ValidationError('Failed to parse the CSV file')


class Method1(models.Model):
    inputfile = models.FileField(validators=[validate_csv])