有人可以提供一个关于使用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字段,所以请求可能没问题。
我哪里做错了?代码片段是最受欢迎的,谢谢!
答案 0 :(得分:21)
您的资源应如下所示:
class FooResource(ModelResource):
img = fields.FileField(attribute="img", null=True, blank=True)
class Meta:
queryset = Foo.objects.all()
attribute
应对应于模型中的字段。
如文档中所述:
ApiField。的属性强>
一个字符串,命名由Resource包装的对象的实例属性。