Найти - Пользователи
Полная версия: Не сохраняется картинка через django-form
Начало » Django » Не сохраняется картинка через django-form
1 2 3 4
wadadaaa
Ребята, сос - никак не могу сохранить картинку через форму.
Вот код:

class AddproductForm(forms.ModelForm):
    class Meta:
        model = Product
        exclude = ("submitter",)
class AddProduct(CreateView):
    model = Product
    form_class = AddproductForm
    def form_valid(self, form):
        f = form.save(commit=False)
        f.submitter = self.request.user
        f.save()
        return super(CreateView, self).form_valid(form)
    def addimg(request):
        if request.method == "POST":
            form = AddproductForm(request.POST, request.FILES)
            form.save()
    def get_success_url(self):
        return reverse("profile", kwargs={'slug': self.request.user})
wadadaaa
Исправлено на
class AddProduct(CreateView):
    model = Product
    form_class = AddproductForm
    def form_valid(self, form):
        f = form.save(commit=False)
        f.submitter = self.request.user
        if request == 'POST':
            f = AddproductForm(request.POST, request.FILES)
        f.save()
        return super(CreateView, self).form_valid(form)
    def get_success_url(self):
        return reverse("profile", kwargs={'slug': self.request.user})
через admin сохранются, через форму никак
wadadaaa
Singularity
http://wiki.python.su/%D0%9A%D0%B0%D0%BA%D0%9F%D0%BE%D0%B4%D1%81%D0%B2%D0%B5%D1%87%D0%B8%D0%B2%D0%B0%D1%82%D1%8C%D0%9A%D0%BE%D0%B4
Исправила, теперь можете помочь?)
Singularity
class AddproductForm(forms.ModelForm):
    class Meta:
    	model = Product
    	exclude = ['submitter',]
class AddProduct(CreateView):
    model = Product
    form_class = AddproductForm
    # Или
    #fields = ['src', 'name'] и т.д.
    def form_valid(self, form):
        form.instance.submitter = self.request.user
        return super(AddProduct, self).form_valid(form)
url(r'^addproduct/$', AddProduct.as_view(), name='addproduct'),
    {{  form.errors }}
<form enctype="multipart/form-data" action="{% url "addproduct" %}" method="post">{% csrf_token %}
{{ form.as_ul }}
    <button type="submit">Загрузить</button>
 </form>
PanovSergey
Посмотрите в request.FILES есть ли реально данные.
А то вон че в доках пишут то
Note that request.FILES will only contain data if the request method was POST and the <form> that posted the request has the attribute enctype=“multipart/form-data”. Otherwise, request.FILES will be empty.
Singularity
PanovSergey
PanovSergey
Посмотрите в request.FILES есть ли реально данные.
шо ?

Зачем вообще в form_valid создавать новую форму ? form_valid вызывается когда форма удачно валидируется. Вот все хорошо вместо того что-бы сохранить с подмененным submiter`ом - давайте создадим еще одну форму в которой нет submiter ибо в форме его нет, а мы не ничего вставляли. При чем старая форма удалится ибо её затерли новой переменной и сборщик мусора её удалит.
PanovSergey
шо ?
Я не вам писал Мы одновременно писали, ваш ответ просто выше моего оказался. И не это, а то что если в шаблоне не указать enctype=“multipart/form-data” все сломается…
wadadaaa

Теперь получается
IntegrityError at /addproduct/
products_product.submitter_id may not be NULL
Singularity
wadadaaa
Выложите код модели.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB