2013-08-22 23 views
5

Występuje problem podczas opracowywania api z degustem. To, czego chcę, to wiedzieć, czy istnieje sposób, aby opublikować zdjęcie bezpośrednio w serwisie json.Jak przesłać plik/obraz za pomocą funkcji tastypie

W moich modeli teraz używam ImageField:

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

Wtedy w moim pliku API:

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

kiedy wysłać to podstawowy json tylko użytkownik i opis to działa? dobrze. Wtedy, kiedy idę, aby dodać informacje o moim obrazie:

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

otrzymuję komunikat o błędzie: obiekty „DICT” nie ma atrybutu „_commited”

Czy istnieje „czysta droga”, aby przesłać plik natywnie z tastypie czy powinienem użyć Base64FileField?

Dziękuję

+2

Musisz napisać zwyczaj 'hydrate_photo()' funkcja, która trwa w JSON dokument podrzędny i zapełnia FileField - TastyPie nie obsługuje tego, co próbujesz zrobić zaraz po wyjęciu z pudełka. – cpf

+0

Ok, dziękuję za odpowiedź –

Odpowiedz