首页 > 解决方案 > 使用 django 动态创建文件

问题描述

我有 2 个模型 Uploades 和 File 一个用于图像,一个用于图像的 OCR 结果,所以每当我上传图像时,都会生成一个带有结果的文件,在管理面板和 DRF api root 上工作时它工作正常但是当我尝试 Postman 时,我收到 500 服务器错误并且图像是由未创建文件提交的,我真的不知道是什么原因,所以我会很感激一些帮助。这些是我的模型

class Uploads(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title=models.CharField(max_length=100,default='none')
    image=models.ImageField(upload_to='media',unique=True)
    created_at = models.DateTimeField(auto_now_add=True)
这部分是创建文件

 super(Uploads, self).save(*args, **kwargs)
        
        if self.id :
            File.objects.create(
                file=(ContentFile(Create_Pdf(self.image),name='file.txt')
                ))

Create_Pdf 函数只是运行 pytesseract:

import PIL.Image
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def Create_Pdf(image):
   text=pytesseract.image_to_string(PIL.Image.open(image))
   return(text)

这是我的文件模型:

class File(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
    label=models.CharField(max_length=100, default='none')
    title=models.CharField(max_length=200,default='test')
    file=models.FileField(upload_to='files')
    created_at = models.DateTimeField(auto_now_add=True)
    def __str__(self):
        return str(self.id)

标签: djangodjango-rest-framework

解决方案


推荐阅读