का उपयोग कर प्रोफ़ाइल छवि अपलोड करना मैंने संबंधित प्रश्नों पर चारों ओर देखा है, लेकिन कोई भी जवाब काम नहीं कर रहा है। मैं किसी उपयोगकर्ता के लिए प्रोफ़ाइल छवि अपलोड करने का प्रयास कर रहा हूं और इसे वर्तमान छवि को प्रतिस्थापित (ओवरराइट) कर रहा हूं। छवि को सहेजने पर मैं फ़ाइल आईडी को उपयोगकर्ता आईडी में बदलना चाहता हूं। वर्तमान स्वरूप में छवि अपलोड हो जाएगी, लेकिन यह मौजूदा छवि को प्रतिस्थापित नहीं करेगी (उदा। इसे 2_1.png के रूप में सहेजा जाएगा)।Django ModelForm
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})
धन्यवाद। यह एक जवाब है जो मैंने पार किया, लेकिन मैं चाहता था कि मॉडलफॉर्म बचत को संभाले। मैंने एक मौजूदा छवि को ओवरराइट करने और UserProfile मॉडल के तहत छवि क्षेत्र में नए संग्रहण का उपयोग करने के लिए FileSystemStorage को उपclassing समाप्त कर दिया। – dvw
ओह ठीक है। सुनने के लिए बहुत अच्छा है कि आप इसे काम करने के लिए मिला! – randrumree
आपके कोड में थोड़ा टाइपो है। dest.write (हिस्सा) –