Подтвердить что ты не робот

Django-tastypie: Любой пример загрузки файла в POST?

Может ли кто-нибудь дать полный пример использования Tashypie 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()

Если я попытаюсь создать объект foo с помощью curl, например,

>>> curl -F "body=test" -F "[email protected]_img.png" http://localhost:8000/api/0.1/foo/

Объект foo успешно создан, но поле img равно null. В отладчике я вижу, что при сохранении объекта пакета действительно есть поле img, которое содержит объект InMemoryUploadedFile, поэтому запрос, вероятно, одобрен. Где я поступаю неправильно? Фрагменты кода приветствуются, спасибо!

4b9b3361

Ответ 1

Ваши ресурсы должны выглядеть так:

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

attribute должно соответствовать полю в модели. Как указано в документации:

ApiField. атрибут

Строка, обозначающая атрибут экземпляра объекта, обернутого Ресурсом.