Django의 관리자 삭제 확인 페이지를 호출하는 데 사용되는 메소드를 무시할 수 있습니까?
-
06-07-2019 - |
문제
Django의 관리자 페이지에서 관리자가 객체의 삭제 버튼을 클릭하면 작업을 수행하고 싶습니다. 다시 말해, "당신은 확실합니까?"에 도착하기 전에 몇 가지 코드를 실행하고 싶습니다. 확인 페이지를 삭제합니다.
나는이 객체의 템플릿 페이지를 무시할 수 있다는 것을 알고 있지만 더 쉬운 것을 기대하고있었습니다 (즉, 모델 또는 양식의 메소드를 무시합니다).
이견있는 사람?
해결책
당신은 무시할 수 있습니다 ModelAdmin.delete_view()
방법, 좋아요 :
class MyModelAdmin(ModelAdmin):
def delete_view(self, request, object_id, extra_context=None):
# if request.POST is set, the user already confirmed deletion
if not request.POST:
perform_my_action()
super(MyModelAdmin, self).delete_view(request, object_id, extra_context)
다른 팁
우리는 django.shortcuts.redirect를 사용하여 다음과 같이 삭제를 중단 할 수 있습니다.
def check_del(self, object_id):
produkt = Produkt.objects.get(id = object_id)
if produkt.typsklepu_set.all():
return False
else:
return True
def delete_view(self, request, object_id, extra_context=None):
# if request.POST is set, the user already confirmed deletion
if not request.POST and self.check_del(object_id):
return super(ProduktAdmin, self).delete_view(request, object_id, extra_context)
elif request.POST:
return super(ProduktAdmin, self).delete_view(request, object_id, extra_context)
else:
msg = u'Can not delete this object.'
messages.error(request, msg)
return redirect('..')
제휴하지 않습니다 StackOverflow