Файлы обработки форм Django
Итак, у меня есть следующий код:
# the view
class UpdateDateView(LoginRequiredMixin, UpdateView):
model = Date
form_class = DateForm
template_name = 'app/form/date_edit_form.html'
def save_photos(self, date) -> None:
photos = self.request.FILES.getlist('photo')
current_photos = self.request.FILES.getlist('custom-photo-name') # this is not working
for photo in photos:
Photo.objects.create(date=date, photo=photo)
def form_valid(self, form):
date = form.save()
self.save_photos(date)
return super().form_valid(form)
# the form
class DateForm(forms.ModelForm):
photo = forms.ImageField(required=False)
class Meta:
model = Date
exclude = ('user',)
# the Edit form
<form action="{% url 'app:edit-date' date.slug %}" method="post" enctype="multipart/form-data">{% csrf_token %}
<div class="form-container">
...
<tr>
<th><label for="id_photo">Image:</label></th>
<td>
<input type="file" name="photo" accept="image/*" id="id_photo" multiple>
</td>
</tr>
<div class="current-photos">
{% for photo in date.photos.all %}
<div class="photo-wrapper-{{ forloop.counter }}">
<img src="{{ photo.photo.url }}" width="200px"><a class="delete-photo" id="{{ forloop.counter }}">Delete</a>
<input type="file" name="custom-photo-name" value="{{ photo }}" class="hide" id="photo_{{ forloop.counter }}">
</div>
{% endfor %}
</div>
</div>
<div class="buttons">
<input type="submit" value="Save" class="create-button redirection no_decoration">
<a href="{% url 'app:date_details' date.slug %}" class="redirection no_decoration">Back</a>
</div>
</form>
# js (jquery)
$('.delete-photo').on('click', function() {
const id = $(this).attr('id');
const div_class = `.photo-wrapper-${id}`;
$(div_class).remove()
});
У меня есть CreateView и UpdateView. Поле ImageField не является обязательным, оно опционально. Предположим, что я создал новую дату с фотографиями. Затем я захотел отредактировать его фотографии (удалить некоторые и добавить новые). Когда я нажимаю на тег (Delete), обёртка div для этой фотографии удаляется. Когда я пытаюсь сохранить свои правки, я хочу получить доступ к двум разным спискам с фотографиями (те, которые были добавлены в прошлом, и новые фотографии). Это self.request.FILES.getlist('custom-photo-name'), кажется, ничего не делает с текущими фотографиями. Пожалуйста, помогите, может у меня вообще логика кода плохая? Что я упускаю? Что ищет html форма при отправке формы, тег или может быть атрибут name? Заранее огромная благодарность!