2013-08-22 83 views
5

Tôi đang gặp vấn đề trong khi phát triển api với ngon. Những gì tôi muốn về cơ bản là để biết nếu có một cách để gửi một hình ảnh để ngon trong json trực tiếp.Làm thế nào để tải lên một tập tin/hình ảnh thông qua deliciouspie

Trong mô hình của tôi ngay bây giờ tôi đang sử dụng một ImageField:

class MyClass(models.Model): 
     description = models.TextField() 
     user = models.ForeignKey(User) 
     photo = models.ImageField(upload_to="image", null=True, blank=True) 

Sau đó, trong tập tin api của tôi:

class InquiryResource(ModelResource): 
     user = fields.ForeignKey(UserResource, 'user' ,full=True) 
     photo = fields.FileField(attribute = 'photo', null=True, blank = True) 

     class Meta : 
      queryset = MyClass.objects.all() 
      resource_name = "MyClass" 
      authorization = Authorization() 

Khi tôi gửi thông điệp này một json cơ bản chỉ với người sử dụng và mô tả nó hoạt động tốt. Sau đó, khi tôi đi để thêm thông tin về hình ảnh của tôi:

{ ... , 
    photo : { 
     Content-Type : "image/png", 
     file : "base64string", <----- this one contains the file as a long string 
     name : "test.png" 
    } ...} 

tôi nhận được một thông báo lỗi: 'dict' đối tượng đã không có thuộc tính '_commited'

Có một "cách sạch" để tải lên một tập tin nguyên bản với ngon hoặc tôi nên sử dụng Base64FileField?

Cảm ơn bạn

+2

Bạn cần phải viết một tùy chỉnh 'hydrate_photo() 'chức năng mà mất trong subdocument JSON của bạn và populates FileField - TastyPie không hỗ trợ những gì bạn đang cố gắng để làm out-of-the-box. – cpf

+0

Ok cảm ơn bạn đã trả lời –

Trả lời