如何在Djang中保存视图中的字符串变量

2024-09-30 05:22:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将pytesseract用于我的Django应用程序。在视图.py我调用了pytesseract,并将找到的所有文本存储在“text\u content”变量中。我想把这个变量保存为我的模型的“text”参数,但我不知道该怎么做。你知道吗

我尝试使用.save(),但出现以下错误:

'str' object has no attribute 'save'

这里是视图.py你知道吗

def image_view(request):
    if request.method == 'POST':
        form = partForm(request.POST, request.FILES)

        if form.is_valid():
            form.save()
            data = request.POST.copy() 
            image_file = request.FILES.get('image')
            text_content = pytesseract.image_to_string(Image.open(image_file))
            text_content.save()
            return redirect('success')
    else:
        form = partForm()
    return render(request, 'add_image.html', {'form' : form})

这里是型号.py你知道吗

class Component(models.Model):
    snum = models.CharField(max_length=20, default = '')
    image = models.ImageField(blank=True)
    text = models.TextField(default = 'no text found')

这里是表单.py你知道吗

class partForm(forms.ModelForm):
    snum = forms.CharField(max_length=128, help_text="please enter the 
    number.")

   class Meta:
        model = Component
        fields = ['snum', 'image']

Tags: notextpyimageform视图modelsrequest
1条回答
网友
1楼 · 发布于 2024-09-30 05:22:05

因为这条线而发生错误。text_content.save()

您正在尝试对字符串对象调用save函数。你知道吗

现在要解决你的问题,有两种方法。一种是操作请求数据并将其发送到表单,另一种是在模型的save方法中执行。你知道吗

方法一:以你目前的观点

if form.is_valid():
    data = request.POST.copy()
    image_file = request.FILES.get('image')
    text_content = pytesseract.image_to_string(Image.open(image_file))
    data['relevant_field_name'] = text_content
    new_form = partForm(data) 
    if new_form.is_valid():
        new_form.save() 
return redirect('success')

方式二:进型号.py,将此添加到组件

def save(self, *args, **kwargs):
    if getattr(self, 'image'): 
          image_file = self.image
          self.relevant_field_name = pytesseract.image_to_string(Image.open(image_file))
    super(Component, self).save(*args, **kwargs)

相关问题 更多 >

    热门问题