Форум сайта python.su
Не знаю как сохранить несколько файлов из формы при множественном выборе из диалога <input … multiple=true>.
request.FILES возвращает словарь с ключом - имя поля(image) и значением ключа - список классов изображения.
Подскажите как правильно сохранить все значения в БД из этого словаря?? (проще говоря, как сохранить все файлы из формы)
ОБНОВЛЕНО views.py
models.py:
class Image(models.Model): image = models.ImageField(upload_to='images/%Y/%m') album = models.ForeignKey(Album) created = models.DateField(auto_now_add=True) def save(self, *args, **kwargs): if kwargs.pop('max_img_count', 1) <= kwargs.pop('curr_img_count', 0): return 'The maximum number of images is reached' else: super(Image, self).save(*args, **kwargs) return 'Image is loaded' def __unicode__(self): return self.image.name
class ImageForm(ModelForm): class Meta: model = Image exclude = ('album',) widgets = { 'image': widgets.ClearableFileInput(attrs={'multiple':'true'}) }
@login_required() def load_images(request, albumname): album = Album.objects.get(albumname=albumname[:-1]) max_img_count=10 message = None if request.POST: file_list = request.FILES.getlist('image', []) form = ImageForm(request.POST, request.FILES) if form.is_valid() and len(file_list)<=1: image = form.save(commit=False) print type(image) image.album = album message = image.save(curr_img_count=album.image_set.count(), max_img_count=max_img_count) elif form.is_valid() and len(file_list)>1: #вот тут видимо надо менять проверку формы for f in file_list: try: image = Image(album=album, image=f) print type(image) message = image.save(curr_img_count=album.image_set.count(), max_img_count=max_img_count) except: message = 'loop error' else: form = ImageForm() imagetable = album.image_set.all() return render_to_response( 'myimages/images.html', dict(form=form, message=message, imagetable=imagetable), context_instance=RequestContext(request))
Отредактировано buddha (Окт. 26, 2012 17:31:00)
Офлайн
Возможно, вам помогут формсеты?
https://docs.djangoproject.com/en/dev/topics/forms/formsets/
Офлайн
Попробую. Еще один человек тоже на них направил… Спс.
Офлайн
FormSets не под мой случай я так понял. И вообще под какой они случай я не знаю)
Обновил представление.
Теперь проблема:
-Если загружаю в диалоге один файл не явл-ся изображением (например .log), то проверка поля работает нормально
-А вот если я хитро обвожу или выделаю через shift кучку файлов, среди которых есть файл типа .log(к примеру), то проверка поля не проходит и этот файл сохраняется в базу.
Офлайн