#python #django #django-forms
#python #django #django-формы
Вопрос:
Я пытаюсь получить имя файла загруженного файла, используя formsets.
views.py
...
elif request.method == 'POST':
albumform = AlbumForm(request.POST)
photoformset = PhotoFormSet(request.POST, request.FILES)
if albumform.is_valid() and photoformset.is_valid():
album = albumform.save(commit=False)
album.user = request.user
album.save()
for photoform in photoformset:
if photoform.is_valid() and photoform.has_changed():
# here is where I'm lost
forms.py
...
class AlbumForm(forms.ModelForm):
class Meta:
model = Album
fields = ('title', 'description')
PhotoFormSet = modelformset_factory(
Photo,
fields=('photo',),
extra=4
)
photoform['photo']
не дает мне имя файла напрямую, скорее что-то вроде
<input type="file" name="form-0-photo" accept="image/*" id="id_form-0-photo">
который не указан filename
Я пытался
photo = photoform.save(commit=False)
print(vars(photo))
{'_state': <django.db.models.base.ModelState object at 0x000001F6326132E8>, 'id': None, 'album_id': 105, 'name': '', 'photo': <ImageFieldFile: phone.png>, 'photo_width': 600, 'photo_height': 416, 'thumbnail': '', 'status': '1'}
и я вижу там имя, но должен быть более простой способ добраться до него.
Комментарии:
1. вы пробовали
print(photoform.photo.name)
?2. с помощью
print(photoform.photo.name)
я получаюAttributeError: 'PhotoForm' object has no attribute 'photo'
… сprint(photoform['photo'].name)
я получаюphoto
Ответ №1:
В итоге сработало print(photoform.cleaned_data.get('photo').name)