İlgili sorulara baktım ama cevapların hiçbiri işe yaramıyor. Bir kullanıcı için profil resmi yüklemeye çalışıyorum ve mevcut resmin yerini almasını (üzerine yazmasını) istiyorum. Görüntü kaydedildikten sonra dosya adını kullanıcı kimliğine değiştirmek istiyorum. Mevcut haliyle, resim yüklenecek, ancak mevcut resmin yerini almayacaktır (ör. 2_1.png olarak kaydedilecektir). BuradaDjango ModelForm kullanarak resim yükleme
class PhotoForm(forms.ModelForm):
def save(self):
content_type = self.cleaned_data['photo'].content_type.split('/')[-1]
filename = '%d.%s' % (self.instance.user.id, content_type)
instance = super(PhotoForm, self).save(commit=False)
instance.photo = SimpleUploadedFile(filename, self.cleaned_data['photo'].read(), content_type)
instance.save()
return instance
class Meta:
model = UserProfile
fields = ('photo',)
def photo_form(request):
if request.method == 'POST':
form = PhotoForm(data=request.POST, file=request.FILES, instance=request.user.get_profile())
if form.is_valid():
form.save()
else:
form = PhotoForm()
return render(request, 'photo_form.html', {'form': form})
Teşekkürler. Karşılaştığım bir cevaptı, ama ModelForm'un tasarruf etmesini istedim. Mevcut bir görüntünün üzerine yazmak ve UserProfile Modeli altındaki resim alanındaki yeni depoyu kullanmak için FileSystemStorage alt sınıflarını tamamladım. – dvw
Tamam. İşe koyulduğunu duymak harika! – randrumree
Kodunuzun biraz yazım hatası var. dest.write (yığın) –