Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как сохранить картинки при ошибке пользователя при заполнении формы [RSS Feed]

#1 Авг. 22, 2013 14:41:50

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

Как сохранить картинки при ошибке пользователя при заполнении формы

Есть форма

class AdForm(forms.ModelForm):
    description = forms.CharField(widget=forms.Textarea(attrs={'id': 'description_redactor'}), label=_('Description'))
    contacts = forms.CharField(widget=forms.Textarea(attrs={'id': 'contacts_redactor'}), label=_('Contacts'))
    choises = [(unicode(t.name), [(s.id, unicode(s.name) ) for s in AdSubTag.objects.filter(tag = t)]) for t in AdTag.objects.all()]
    category = ChoiceField(label=_('Category'), choices = [('', '---------')] + choises )
#    price = CapacityDecimalField(label=capitalize(_('price')), max_digits=12, decimal_places=2, help_text=u"руб.",
#                                 widget=forms.widgets.TextInput(attrs={"maxlength": 9}))
    def __init__(self, *args, **kwargs):
        super(AdForm, self).__init__(*args, **kwargs)
        if self.instance.pk:
            self.fields['category'].initial = self.instance.tags.all()[0].pk
    class Meta:
        model = Ad
        fields = ['is_visible', 'ad_type', 'category', 'title', 'price', 'description', 'contacts']
    required_css_class = 'required_field'
class AdImageForm(forms.ModelForm):
    class Meta:
        model = AdImage
        exclude = ('ad_article')

Есть вьюха и в ней обработчик:
    def create(self, request, *args, **kwargs):
        if not request.user.is_authenticated():
            return HttpResponseRedirect('/login?%s=%s' % (REDIRECT_FIELD_NAME, urlquote(request.get_full_path())))
        form = AdForm(request.POST)
        AdImageFormSet = modelformset_factory(AdImage, form=AdImageForm, extra=5)
        formset = AdImageFormSet(request.POST, request.FILES)
        category = request.POST.get('category')
        if form.is_valid() and formset.is_valid() and category:
            category_obj = AdSubTag.objects.get(pk=request.POST['category'])
            ad = form.save(commit=False)
            ad.user = request.user
            ad.save()
            images = [i for i in map(lambda f: f.save(commit=False), formset) if i.image]
            ad.images = images
            for i in images: i.save()
            ad.tags = [category_obj]
            return HttpResponseRedirect(reverse('ad', kwargs={'pk': ad.pk}))
        else:
            return render(request, 'ads/new.html', locals())

Если в каком то поле первой формы делается ошибка, то картинки напрочь слетают, как подправить код для их сохранения



Офлайн

#2 Авг. 22, 2013 17:14:59

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Как сохранить картинки при ошибке пользователя при заполнении формы

простыми методами никак.
http://stackoverflow.com/a/7893540/656984

P.S. ваш пост не читалю.
P.P.S. пожалуйста вычищайте примеры от не относящейся к вопросу информации, пожалейте тех, кто хочет вам помочь.

Офлайн

#3 Авг. 23, 2013 18:49:50

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Как сохранить картинки при ошибке пользователя при заполнении формы

Пусть пользователь заливает картинку вторым шагом в другой форме (после сохранения объекта)

Офлайн

  • Начало
  • » Django
  • » Как сохранить картинки при ошибке пользователя при заполнении формы[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version