هل من الممكن لتجاوز الأسلوب المستخدم لاستدعاء المشرف جانغو حذف صفحة التأكيد؟
-
06-07-2019 - |
سؤال
في صفحات المشرف جانغو، أود أن تنفيذ إجراء عندما ينقر المسؤول على زر حذف لكائن. وبعبارة أخرى، أود أن تنفيذ بعض التعليمات البرمجية قبل وصوله إلى "هل أنت متأكد؟" حذف صفحة تأكيد.
وأنا أدرك أنني قد تجاوز الصفحة قالب لهذا الكائن، ولكن كنت أتمنى لشيء أسهل (أي تجاوز أسلوب على نموذج أو شكل).
وأي أفكار؟
المحلول
ويمكنك تجاوز الأسلوب 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