هل من الممكن لتجاوز الأسلوب المستخدم لاستدعاء المشرف جانغو حذف صفحة التأكيد؟

StackOverflow https://stackoverflow.com/questions/1015072

  •  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('..')
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top