2012-09-12 11 views
18

कोई भी सर्वर-साइड और क्लाइंट-साइड दोनों, स्वादिष्ट फ़ाइलफिल्ड का उपयोग करने पर पूरा उदाहरण दे सकता है?Django-tastypie: POST में फ़ाइल अपलोड पर कोई उदाहरण?

यहाँ मैं क्या कोशिश की है:

#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 -F "body=test" -F "[email protected]_img.png" http://localhost:8000/api/0.1/foo/ 

एक foo वस्तु सफलतापूर्वक बन जाने की कोशिश, लेकिन img फ़ील्ड रिक्त है । मैं डीबगर में देख सकता हूं कि बंडल ऑब्जेक्ट को सहेजते समय वास्तव में एक आईएमजी फ़ील्ड होता है जिसमें InMemoryUploadedFile ऑब्जेक्ट होता है, इसलिए अनुरोध शायद ठीक है। मैं गलत कहां कर रहा हूं? कोड स्निपेट का स्वागत है, धन्यवाद!

उत्तर

21

आपका संसाधन इस तरह दिखना चाहिए:

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

attribute मॉडल में क्षेत्र के अनुरूप होना चाहिए। के रूप में दस्तावेज में कहा गया है:

ApiField.attribute

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

+0

जब मैं ऐसा करते हैं, मैं त्रुटि मिलती है: 'प्रारूप संकेत दिया 'बहुखण्डीय/फार्म-डेटा' नहीं उपलब्ध अक्रमांकन method.' मैं कुछ सरल लापता कर रहा हूँ था? –

+1

मुझे लापता deserialization त्रुटि [यहां] (http://stackoverflow.com/questions/12522332/how-to-access-post-data-inside-tastypie- कस्टम- प्रमाणीकरण) का समाधान मिला, [इस जिथब के आधार पर) पोस्ट] (https://github.com/toastdriven/django-tastypie/issues/42#issuecomment-5485666)। –

संबंधित मुद्दे