Django-tastypie:关于在POST中上传文件的示例吗?

发布于 2021-01-29 19:01:49

任何人都可以在服务器端和客户端两个方面提供有关使用Deliciouspie 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字段为null。我可以在调试器中看到,在保存捆绑对象时,确实有一个包含InMemoryUploadedFile对象的img字段,因此请求可能没问题。我在哪里做错了?欢迎使用代码段,谢谢!

关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您的资源应如下所示:

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

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

    ApiField。 属性

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看