18

任何人都可以给出一个完整的例子来使用服务器端和客户端的tastepie 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字段为空。我可以在调试器中看到,当保存捆绑对象时确实有一个包含InMemoryUploadedFile对象的 img 字段,所以请求可能没问题。我在哪里做错了?代码片段是最受欢迎的,谢谢!

4

1 回答 1

22

您的资源应如下所示:

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

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

api 字段。属性

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

于 2012-09-12T07:42:50.890 回答