Django-tastypie: Any example on file upload in POST?

*爱你&永不变心* 提交于 2019-11-26 11:06:52

问题


Could anyone give a complete example on using the tastypie FileField, both server-side and client-side please?

Here\'s what I have tried:

#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()

If I try to create a foo object using curl, e.g.,

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

A foo object is successfully created, but the img field is null. I can see in debugger that when saving the bundle object indeed has a img field which contains a InMemoryUploadedFile object, so the request is probably ok. Where am I doing wrong? Code snippets are most welcome, thanks!


回答1:


Your Resources should look like this:

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

The attribute should correspond to the field in the model. As stated in the documentation:

ApiField.attribute

A string naming an instance attribute of the object wrapped by the Resource.



来源:https://stackoverflow.com/questions/12381016/django-tastypie-any-example-on-file-upload-in-post

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!