访问通过Tastypie上传的文件

时间:2014-10-23 14:08:31

标签: python django tastypie

我试图对通过POST上传到我的tastypie API的文件进行一些处理。这是我的模型和我的资源。

资源

class TagResource(MultipartResource, ModelResource):
    track = fields.FileField(attribute="track", null=True, blank=True)
    class Meta:
        queryset = Tag.objects.all()
        resource_name = 'tag'
        authorization = Authorization()
        #object_class = Tag
        always_return_data = True

    def obj_create(self, bundle, **kwargs):
        bundle = super(TagResource, self).obj_create(bundle, **kwargs)
        bundle.obj = Tag(track=bundle.data.get('track'))
        bundle.obj.save()
        #the following line is the processing intended.
        result = recognize(bundle.obj.track)
        bundle.data['tag'] = result
        return bundle

模型

class Tag(models.Model):
    track = models.FileField(upload_to=settings.UPLOAD_DIR, max_length=250)

    def __unicode__(self):
        return self.track.url

似乎创建了新对象,但上传的文件永远不会被保存。我推断,因为向api发出get请求会显示新创建的Tag对象,但track为null。

15:Object
id:101
resource_uri:""
track:null

我做错了什么?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我终于开始工作了。好像我没有使用CURL正确发布。我现在用它来上传文件:

curl -F "track=@/path/to/file.mp3" http://1**.**.***.**:8000/api/tag/

之前路径丢失之前的'@'。添加修复它。