【问题标题】:How do I read file data from a method of a FileField subclass in Django?如何从 Django 中的 FileField 子类的方法中读取文件数据?
【发布时间】:2022-08-04 00:04:26
【问题描述】:

我正在 Django 中创建一个自定义字段:

from mysite.data_parsers import get_csv_data_as_dict
from mysite.validators import csv_file_validator
from django.db import models

class CSVFileField(models.FileField):
    default_validators = [csv_file_validator]

    def get_data_as_dict(self):
        # How do I read the file data here? 
        data = self.?
        return get_csv_data_as_dict(data)

如何读取方法中的文件数据?

标签: python django


【解决方案1】:

这似乎可以解决问题:

from mysite.data_parsers import get_csv_data_as_dict
from mysite.validators import csv_file_validator
from django.db import models
from django.db.models.fields.files import FieldFile

class CSVFieldFile(FieldFile):
    def _get_file_data(self):
        try:
            FILE = self.open()
            data = FILE.read()
        finally:
            FILE.close()

        return data

    def get_data_as_dict(self):
        data = self._get_file_data()
        return get_csv_data_as_dict(data)


class CSVFileField(models.FileField):
    default_validators = [csv_file_validator]
    attr_class = CSVFieldFile

如果有人知道这种方法有任何问题,或者知道更好的方法,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2013-02-18
    • 2016-01-11
    • 1970-01-01
    • 2016-09-02
    相关资源
    最近更新 更多