장고에서보기 및 확인란으로 항목을 삭제하는 방법을 설명하는 게시물을 여러 번 보았습니다. AJAX로 단일 항목 삭제를 완료했습니다. 현재 문제는 Django 응용 프로그램에서 여러 항목을 확인란과 AJAX로 삭제하는 방법을 알 수 없다는 것입니다.Django 및 AJAX : 여러 항목 wth 확인란을 삭제
원래 장고의 GCBV 인 DeleteView
을 사용했으며 이는 단일 개체 삭제에 사용되었습니다. 그러나 @Craig Blaszczyk이 지적했듯이 DeleteView
은 그저 하나의 객체를 삭제하는 것입니다. 그래서 나는 첨부 된 폼과 AJAX 호출을 가진 복수의 객체를 삭제하는 새로운 뷰를 작성하여 ids
배열을 전송해야한다.
나는이 일을하고 있지만 그것은 clunky 느낌이 아주 잘 작동하지 않습니다. 내 AJAX 스크립트는 여기에 있습니다 :이 스크립트에서
$.ajax({
type: 'POST',
url: '/dashboard/images/delete/',
data: {'ids': ids},
success: function() {
console.log(date_time + ": AJAX call succeeded.");
},
error: function() {
console.log(date_time + ": AJAX call failed!");
console.log(date_time + ": Image ID: " + ids + ".");
}
});
(여기에 표시된 섹션 위에) 내가 ID의 배열을 구축하고 데이터로 보낼 수 있습니다. 내 CBV에 따라서
, 내가 선택한 ID를 수집하고이를 삭제 해요 :class DeleteImagesForm(forms.Form):
ids = forms.ModelMultipleChoiceField(
queryset=GalleryImage.objects.all(),
widget=forms.CheckboxSelectMultiple(),
)
될 수있는 더 좋은 방법은 무엇 : 여기
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
GalleryImage.objects.filter(pk__in=request.POST.getlist('ids[]')).delete()
return render(request, self.template_name, {'form': form})
은 내가 사용 형태입니다 이러는거야? 아주 좋은 방법을 모색하지 않으면이 솔루션을 사용하지 못하게되었습니다.
또한 힘들다고 생각 되더라도 form.is_valid()
과 통화하면 이미지를 삭제해야합니다.
현상금이 끝나기 전에 마지막으로 나온 단어는 무엇입니까?
쿨 뷰에서
,이 DeleteView' 하나만 작동 '하는 것이 좋은 ... 좋은 지적입니다; 나는 내가 지금하고있는 것을 보여주기 위해 지금 코드를 추가하고 있었다. 귀하의 제안에 감사드립니다. 나는 이것을 밖으로 시험 할 것이다.빠른 견해, 내가이 견해를 작성했다면, 내가 제공 한 AJAX가 여전히 작동 할 것인가? – nicorellius
아약스는 하나의 id 만 전송합니다. 'data : id' 비트를 참조하십시오. 대신 id 배열을 보내려면이를 변경해야합니다. –
나는 한동안 이것을 고심하고 있었고 정확하게 조각들을 모으는 방법을 알 수 없었다. 나는 OP를 업데이트했다. 선호하는 방법을 제안하고 코드 시작 지점을 제공 할 수 있습니까? 원칙적으로 당신이 대답하는 것을 의미하는 것은 합리적입니다. 나는 그 조각들을 함께 모을 수 없다. – nicorellius