Я делал что-то подобное и обнаружил, что, как объясняется здесь , когда вы загружаете файл, он сохраняется в dict ' request.FILE ', который возвращает UploadedFile объекты. Вы можете получить имя файла, открыв его атрибут name (request.FILE['YourModelImageField'].name
).
Вы могли бы иметь что-то вроде этого:
#model.py
class YourModel(models.Model):
name = models.CharField(max_length=20)
image = models.ImageField() # In this case we will have request.FILE['image'].name
#forms.py
class YourModelForm(ModelForm):
class Meta:
model = YourModel
fields = ['image']
#views.py
def add_model(request):
form = YourModelForm(request.POST, request.FILES)
uploaded_file=request.FILES
if form.is_valid():
model_instance = form.save(commit=False)
model_instance.name=uploaded_file['image'].name
model_instance.save()
return render(request, context={'form': form})
Я на самом деле не эксперт по django, поэтому, если кто-то может увидеть ошибку или лучший способ сделать это, пожалуйста, дайте мне знать. Однако это сработало для меня, я надеюсь, что это поможет вам.