2013-08-22 9 views
5

Ich habe ein Problem bei der Entwicklung einer API mit Tastypie. Was ich will, ist im Grunde zu wissen, ob es eine Möglichkeit gibt, ein Bild innerhalb von json direkt in tastypie zu posten.So laden Sie eine Datei/ein Bild durch Tastypie

In meiner Modelle jetzt verwende ich ein Imagefield:

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

Dann in meiner api-Datei:

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

Wenn ich es dieses eine grundlegende json mit nur Benutzer und Beschreibung senden funktioniert Gut. Dann wenn ich Informationen über mein Bild hinzuzufügen:

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

Ich erhalte eine Fehlermeldung: ‚dict‘ Objekte hat kein Attribut ‚_commited‘

Gibt es eine „saubere Art und Weise“, um eine Datei zu nativ mit tastypie oder sollte ich Base64FileField verwenden?

Danke

+2

Sie benötigen eine benutzerdefinierte 'hydrate_photo()' Funktion, die in Ihrem JSON Subdokument nimmt schreiben und füllt das FileField auf - TastyPie unterstützt nicht das, was Sie vorhaben zu tun. – cpf

+0

Ok danke für deine Antwort –

Antwort