更新实例 Django 模型保存方法中的 FileField 值

Lid*_*iro 2 python django django-models

用文件中的总行值更新总计字段的最佳方法是什么?在模型或视图或其他中实现?如何使文件注册始终通过django-admin

模型.py

class Registry(models.Model):

   file_upload = models.FileField(blank=True, null=False) #csv or xlsx
   total = models.CharField(max_length=100, null=True, blank=True, default=None)

   def save(self):
     with open(self.file_upload) as f:
        self.total = sum(1 for line in f)
        return self.total
Run Code Online (Sandbox Code Playgroud)

错误:

 TypeError: expected str, bytes or os.PathLike object, not FieldFile
Run Code Online (Sandbox Code Playgroud)

Ast*_*and 5

使用方法可以简单的读取上传文件的文件内容.read()。

然后对这些内容做任何您想做的事情。

def save(self):
    self.total = sum(1 for line in self.file_upload.read())
    super(Registry, self).save(*args, **kwargs) 
Run Code Online (Sandbox Code Playgroud)

无需在操作系统级别再次打开。