所以,我正在实施的答案我刚才的问题

下面是我的模型:

class Talk(models.Model):
  title        = models.CharField(max_length=200)
  mp3          = models.FileField(upload_to = u'talks/', max_length=200)

这是我的方式:

class TalkForm(forms.ModelForm):
  def clean(self):
    super(TalkForm, self).clean()
    cleaned_data = self.cleaned_data

    if u'mp3' in self.files:
      from mutagen.mp3 import MP3
      if hasattr(self.files['mp3'], 'temporary_file_path'):
        audio = MP3(self.files['mp3'].temporary_file_path())
      else:
        # What goes here?
        audio = None # setting to None for now
      ...
    return cleaned_data

  class Meta:
    model = Talk

诱变剂需要类文件在磁盘上的对象或文件名(I < EM>认为的) - 第一种情况(其中上传的文件比文件在内存中处理的大小)工作正常大,但我不知道如何处理InMemoryUploadedFile,我得到的除外。我已经试过:

# TypeError (coercing to Unicode: need string or buffer, InMemoryUploadedFile found)
audio = MP3(self.files['mp3'])

# TypeError (coercing to Unicode: need string or buffer, cStringIO.StringO found)
audio = MP3(self.files['mp3'].file)

# Hangs seemingly indefinitely on my test file (~800KB)
audio = MP3(self.files['mp3'].file.read())

是不是有什么毛病诱变剂,还是我做错了吗?

后字谜的回答

修改对飞FILE_UPLOAD_HANDLERS设置在我ModelAdmin类是这样的:

def add_view(self, request, form_url='', extra_context=None):
  request.upload_handlers = [TemporaryFileUploadHandler()]
  return super(TalkAdmin, self).add_view(request, form_url, extra_context)

获取我下面的错误500,当我点击提交:

  

可以不上传已被处理之后设置上传处理程序。

即使我做这件事,早在我所能!

另外,我不知道我有我找回对象上的save方法(我看着在dir(self.files['mp3'].file)dir(self.files['mp3']))。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top