Usuń domyślną akcję usuwania w panelu administracyjnym Django


Jak mogę usunąć domyślną akcję usuwania w panelu administracyjnym Django?
Czy poniższe zadziała?
actions = [ ]

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

To działa:
def get_actions(self, request):
actions = super().get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions

Jest to również zalecany sposób na zrobienie tego na podstawie poniższej dokumentacji Django:
Warunkowe włączanie lub wyłączanie akcji
https://docs.djangoproject.com ... tions
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W klasie administratora określ has_delete_permission
,
https://docs.djangoproject.com ... ssion
aby zwrócić
False
:
class YourModelAdmin(admin.ModelAdmin):
... def has_delete_permission(self, request, obj=None):
return False

Wtedy nie pokaże przycisku usuwania i nie pozwoli ci usunąć obiektów w interfejsie administratora.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz wyłączyć działanie "Usuń wybrane" na całej stronie:
from django.contrib.admin import site
site.disable_action('delete_selected')

Jeśli chcesz włączyć tę akcję, dodaj
„delete_selected”
do listy działań:
actions = ['delete_selected']

Dokumentacja
https://docs.djangoproject.com ... ction
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli chcesz usunąć wszystkie działania:
class UserAdmin(admin.ModelAdmin):
model = User
actions = None

Jeśli potrzebujesz konkretnego działania:
class UserAdmin(admin.ModelAdmin):
model = User
actions = ['name_of_action_you_want_to_keep']
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli używasz tego modelu jako klucz zewnętrzny do innego modelu.
Następnie, używając limitu
Chroń
dla tego klucza zewnętrznego, możesz wyłączyć usunięcie tego modelu w Django Admin.
na przykład,
class Exam(models.Model):
student = models.ForeignKey(User, on_delete=models.PROTECT)
marks = models.IntegerField(default=0)

Dodając ograniczenie
PROTECT
do modelu
User
za pomocą klucza obcego obecnego w modelu
Exam
, wyłączyłem możliwość (w modelu
Django admin
lub w innym miejscu) usuń uczniów
(User)
, którzy napisali egzaminy.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się