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

blu*_*cat 18 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()
Run Code Online (Sandbox Code Playgroud)

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

>>> curl -F "body=test" -F "img=@local_img.png" http://localhost:8000/api/0.1/foo/
Run Code Online (Sandbox Code Playgroud)

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

Ani*_*cha 22

您的资源应如下所示:

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

attribute应与该领域的典范.如文档中所述:

ApiField.属性

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