2016-03-24 28 views
2

Birkaç alan ve bir Django ImageField içeren ProductImage adlı bir modelim var. Bu durumda zaten oluşturulmuş nesneye sahibim ve nesnedeki featured boolean'ı güncellemek istiyorum.Nesne bir resim alanıyla nasıl güncelleştirilir - Django Rest Framework

gönderilen veri, bir dosya değildi:

Sorun bir $http.put() (kullanma angularjs) ne zaman bir hata söyleyerek geri döndü elde edilmesi. Formdaki kodlama türünü kontrol edin.

Benim REST API Nesne GET isteği üzerine şöyle

:

{ 
    "id": 15, 
    "image": "http://127.0.0.1:8000/media/products/photo_1_5.JPG", 
    "alt": "HelloWorld", 
    "featured": false, 
    "product": 1 
} 

böyle görünüyor göndermek HTTP PUT isteği: (featured edin true olarak değiştirildi)

{ 
    "id": 15, 
    "image": "http://127.0.0.1:8000/media/products/photo_1_5.JPG", 
    "alt": "HelloWorld", 
    "featured": true, 
    "product": 1 
} 

Öyleyse ... Resim dosyasını yeniden göndermeye/yeniden yüklemeye gerek kalmadan nesneyi nasıl güncellerim?

cevap

1

Bir nesneyi güncelleştirmek için PUT kullanırsanız, tam bir örnek göndermeniz gerekir. Bu durumda, görüntü için bir url değil image için bir görüntü dosyası göndermeniz gerekir.

En kolay çözüm, PUT yerine PATCH kullanmaktır. Sonra kısmi bir güncelleme yapabilir ve sadece güncellenmiş alanları gönderebilirsiniz. Ben `PATCH` yapmak ve sözlük dışına` image` dışarı çıktığınızda

{ 
    "featured": true 
} 
+0

, bu 'resim = None' gibi davranır ve onu' null' eski 'image' değerinin üzerine. Eksik olduğum bir ayar mı? –

+0

Diziselleştirici veya "update" yöntemlerini geçersiz kıldınız mı? – ilse2005

+0

Ah evet. Bu çözüldü. –

İlgili konular