Добрый день. Пишу простенький бложик с возможностью вставки картинок в пост, но столкнулся с проблемой редактирования этих самых картинок. Пост:

<pre><code> class Post(models.Model): author = models.ForeignKey('auth.User') topic = models.CharField(max_length=100) post_text = models.TextField() created_date = models.DateTimeField(default=timezone.now) published_date = models.DateTimeField(blank=True, null=True) </code></pre>

Картинки грузятся отдельным классом:

<pre><code> class Images(models.Model): image = models.ImageField(upload_to='media', verbose_name='Image') post = models.ForeignKey(Post, related_name='images') </code></pre>

Для них я создал формы:

<pre><code> class PostForm(forms.ModelForm): topic = forms.CharField(max_length=100)

class Meta:
    model = Post
    fields = ('topic', 'post_text')

</code></pre>

<pre><code> class ImagesForm(forms.ModelForm): image = forms.ImageField(label='image')

class Meta:
    model = Images
    fields = ('image',)

</code></pre>

Пост создаю так: <pre><code> @login_required def post_new(request): ImageFormSet = modelformset_factory(Images, form=ImagesForm, extra=1, can_delete=True)

if request.method == 'POST':
    post_form = PostForm(request.POST)
    formset = ImageFormSet(request.POST, request.FILES, queryset=Images.objects.none())
    if post_form.is_valid():
        post = post_form.save(commit=False)
        post.author = request.user
        post.save()

        if formset.is_valid() and formset.has_changed():
            for form in formset.cleaned_data:
                image = form['image']
                pic = Images(post=post, image=image)
                pic.save()

        return redirect('post_detail', pk=post.pk)
else:
    post_form = PostForm()
    formset = ImageFormSet(queryset=Images.objects.none())

return render(request, 'forchan/post_edit.html', {'post_form': post_form, 'formset': formset})

</code></pre>

А редактирую так: <pre><code> @login_required def post_edit(request, pk): post = get_object_or_404(Post, pk=pk) ImageFormSet = modelformset_factory(Images, form=ImagesForm, extra=1, can_delete=True)

if request.method == 'POST':
    post_form = PostForm(request.POST, instance=post)
    formset = ImageFormSet(request.POST, request.FILES, queryset=post.images.all())
    if post_form.is_valid():
        post = post_form.save(commit=False)
        post.author = request.user
        post.save()

        if formset.is_valid():
            for form in formset.cleaned_data:
                image = form.get('image')
                pic = Images(post=post, image=image)
                pic.save()

        return redirect('post_detail', pk=post.pk)
else:
    post_form = PostForm(instance=post)
    formset = ImageFormSet(queryset=post.images.all())

return render(request, 'forchan/post_edit.html', {'post_form': post_form, 'formset': formset})

</code></pre>

Такой вариант при добавлении картинок работает, а вот с удалением беда. Как правильно их убрать? Чекбокс удаления не работает... И можно ли как-то поправить виджет формсета, чтобы вместо чекбокса "delete" была кнопка? Или проще тупо не выводить этот чекбокс, а кнопку поставить рядом, вроде такого варианта: <pre><code> {% for form in formset %} {{ form.image }} тут html код кнопки {% endfor %} </code></pre>