2012-09-12 17 views
18

Herkes sunucu tarafında ve istemci tarafında tastypie FileField kullanımı hakkında tam bir örnek verebilir misiniz? İşte Django-tastypie: POST'ta dosya yükleme ile ilgili herhangi bir örnek var mı?

denedim ne:

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

Ne foo nesne başarıyla oluşturuldu

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

, örneğin curl kullanarak bir foo nesnesi oluşturmak için çalışıyorum, ama img alan boş ise . Hata ayıklayıcıda, paket nesnesini gerçekten kaydederken, InMemoryUploadedFile nesnesini içeren bir img alanının bulunduğunu ve isteğin büyük olasılıkla tamam olduğunu görebiliyorum. Neredeyim yanlış yapıyorum? Kod snippet'leri hoş geldiniz, teşekkürler!

cevap

21

Kişisel Kaynaklar aşağıdaki gibi görünmelidir:

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

attribute modelinde alana karşılık gelmelidir. belgelerinde belirtildiği gibi : Bunu yaptığınızda

ApiField.attribute

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

+0

, ben hata alıyorum: 'Biçim 'çok parçalı/formu-veri' belirtilen method.' Basit bir şey eksik hiçbir mevcut deserialization vardı? –

+1

[Bu github] temelli eksik serileştirme hatası [burada] (http://stackoverflow.com/questions/12522332/how-to-access-post-data-inside-tastypie-custom-authentication) için bir çözüm buldum. post] (https://github.com/toastdriven/django-tastypie/issues/42#issuecomment-5485666). –

İlgili konular