alexkomp
@alexkomp
Простота — залог надежности.

Почему не изменяется изображение через форму на сайте на Django?

Почему не изменяется изображение через форму на сайте на Django?

При добавлении поста изображение добавляется, а при изменении - нет.

создал модель

model.py
class Ware(models.Model):
    title = models.CharField(max_length = 130)
    slug = models.SlugField()
    description = models.TextField()
    prise = models.DecimalField(max_digits = 7, decimal_places=0)
    available = models.BooleanField(default=True)
    image = models.ImageField(upload_to='images/', blank=True)
    
    def __str__(self):
        return self.title


перенёс в форму

forms.py
class CommentsForm(forms.ModelForm):
    class Meta:
        model = Ware
        fields = ['title', 'slug', 'prise', 'image', 'description', 'available']


views.py
def testimage_add(request):
    if request.method != 'POST':
        form=CommentsForm()
    else:
        form=CommentsForm(request.POST, request.FILES)
        if form.is_valid():
            post = form.save(commit=False)
            form.save()
            return HttpResponseRedirect("/")
    context={'form': form}
    return render(request, 'ware.html', context)


#функция изменения поста
def post_edit(request, pk):
    post = get_object_or_404(Ware, pk=pk)
    if request.method == "POST":
        form = CommentsForm(request.POST, instance=post)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            form.save()
            return HttpResponseRedirect("/")
    else:
        form = CommentsForm(instance=post)
    return render(request, 'ware.html', {'form': form})


urls.py
from django.conf.urls import url 
from django.views.generic import ListView, DetailView
from index.models import Ware
from . import views
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url('shop/(?P<pk>[0-9]+)/', DetailView.as_view(model = Ware, template_name = 'detail_ware.html')),
    url('post/(?P<pk>[0-9]+)/edit/', views.post_edit, name='post_edit'),
    url(r'^$', ListView.as_view(queryset=Ware.objects.all().order_by('-title')[:20],
    template_name = 'index.html')),

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  • Вопрос задан
  • 460 просмотров
Решения вопроса 1
alternativshik
@alternativshik
ну так тут же файлов нет
form = CommentsForm(request.POST, instance=post)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы