2015-12-08 6 views
9

Django व्यवस्थापक में डिफ़ॉल्ट हटाए गए क्रिया को कैसे हटाएं? निम्नलिखित काम करेगा?Django व्यवस्थापक में डिफ़ॉल्ट हटाएं कार्रवाई को हटाएं

actions = [ ] 
+0

कि आप Django व्यवस्थापक में समूहों और अनुमतियों का उपयोग कर सकते हैं। –

उत्तर

20

यह काम करता है:

def get_actions(self, request): 
    actions = super(YourAdmin, self).get_actions(request) 
    if 'delete_selected' in actions: 
     del actions['delete_selected'] 
    return actions 
+0

https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-actions – felix

6

अपने व्यवस्थापक कक्षा में, परिभाषित has_delete_permissionFalse वापस जाने के लिए:

class YourModelAdmin(admin.ModelAdmin): 
    ... 

    def has_delete_permission(self, request, obj=None): 
     return False 

फिर, यह बटन को नष्ट नहीं दिखाई देगा, और आप व्यवस्थापक इंटरफ़ेस में वस्तुओं को हटाने के लिए अनुमति नहीं दी जाएगी।

+3

यह हटाए गए बटन को हटा देगा, लेकिन यह ड्रॉपडाउन से हटाए गए विकल्प को नहीं हटाएगा, जिसका उपयोग एकाधिक प्रविष्टियों का चयन करने और हटाने की क्रिया निष्पादित करने के लिए किया जाता है। –

+0

@DawnTCherian, आप सही हैं। लेकिन हटाने की अनुमति नहीं है; प्रयास 403 निषिद्ध प्रतिक्रिया वापस करेगा। – falsetru

+0

@DawnTCherian, FYI, आपका समाधान विस्तार व्यवस्थापक पृष्ठ में हटाएं बटन प्रकट करेगा। – falsetru

3

आप सभी कार्रवाई को निकालना चाहते हैं:

class UserAdmin(admin.ModelAdmin): 
    model = User 
    actions = None 

आप कोई खास कार्य करना चाहते हैं:

class UserAdmin(admin.ModelAdmin): 
    model = User 
    actions = ['name_of_action_you_want_to_keep'] 
+0

क्रिया = ['name_of_action_you_want_to_keep'] Django 2.0 के लिए काम नहीं करता है – fanny

2

आप "निष्क्रिय कर सकते हैं का चुनाव हटाना "एक्शन साइट-वाईड:

from django.contrib.admin import site 
site.disable_action('delete_selected') 

आप, इस कार्रवाई शामिल करने के लिए कार्रवाई की सूची पर 'delete_selected' जोड़ने की जरूरत है:

actions = ['delete_selected'] 

Documentation

संबंधित मुद्दे