1

我使用以下模型将文件存储在 django 应用程序的数据库中:

class Data(BaseModel):
    _data = models.TextField(
            db_column='data',
            blank=True)

    def set_data(self, data):
        self._data = base64.encodestring(data)

    def get_data(self):
        return base64.decodestring(self._data)
    item = models.OneToOneField(Item)
    data = property(get_data, set_data)

我可以轻松保存这些对象而没有任何问题:

form = ItemForm(request.POST)
if form.is_valid():
    try:
        file = request.FILES['file']
    except MultiValueDictKeyError:
        errors = form._errors.setdefault(forms.forms.NON_FIELD_ERRORS, forms.util.ErrorList())
        errors.append("select file")
    else:
        item = form.save()
        item.filename = file.name
        item.save()

        blob = Data(item=item)
        blob.data = file.read()
        blob.save()

但是,我无法读取此类编码数据。我尝试将此类文件保存到文件系统:

        #save test
        new_filename = 'new_%s'%(item.filename,)
        a = open(new_filename,'w')
        a.write(blob.data)
        a.close()

(我使用图像作为测试文件,当运行上面的代码时,我无法打开这样的图像,它不正确)。我做错了什么?

4

0 回答 0