Django-tastypie:POST中文件上传的任何例子?

时间:2012-09-12 03:59:19

标签: python django tastypie

有人可以提供一个关于使用tastypie FileField的完整示例,无论是服务器端还是客户端?

以下是我的尝试:

#models.py
class Foo(models.Model):
    img = models.ImageField(upload_to="images", null=True, blank=True)
    body = models.CharField()

#api.py
class FooResource(ModelResource):
    img = fields.FileField(attribute="image", null=True, blank=True)
    class Meta:
        queryset = Foo.objects.all()

如果我尝试使用curl创建一个foo对象,例如,

>>> curl -F "body=test" -F "img=@local_img.png" http://localhost:8000/api/0.1/foo/

成功创建了foo对象,但img字段为空。我可以在调试器中看到,保存bundle对象时确实有一个包含InMemoryUploadedFile对象的img字段,所以请求可能没问题。 我哪里做错了?代码片段是最受欢迎的,谢谢!

1 个答案:

答案 0 :(得分:21)

您的资源应如下所示:

class FooResource(ModelResource):
    img = fields.FileField(attribute="img", null=True, blank=True)
    class Meta:
        queryset = Foo.objects.all()

attribute应对应于模型中的字段。 如文档中所述:

  

ApiField。的属性

     

一个字符串,命名由Resource包装的对象的实例属性。