/ / Django admin editable field - podejmij akcję - django, web, django-models, django-admin, django-views

Django admin editable field - podejmij akcję - django, web, django-models, django-admin, django-views

Mam pytanie: W administratorze Django, gdy masz model z kolumną (BooleanField) i ustaw go jako edytowalny w admin.py. Czy jest to możliwe, gdy zaznaczysz i zapiszesz, aby wykonać jakieś działanie? Mam obiekt, powiedzmy Ticket, z różnymi polami i innym polem o nazwie Status. Widzę wszystkie jego pola w Django Admin (zarejestruj je w admin.py) i kiedy ustawiam jego status na True i zapisz go, chcę, aby administrator django wysłał e-mail, powiedzmy ... Czy to możliwe, a jeśli ... w jaki sposób ? Bardzo dziękuję ludziom i Wesołych Świąt!

Odpowiedzi:

1 dla odpowiedzi № 1

Tak, jest to możliwe przez przesłonięcie metody save_model w klasie ModelAdmin. Możesz znaleźć odpowiednie dokumenty tutaj.

Tak więc, biorąc pod uwagę twój przykład, możesz zrobić coś podobnego do tego:

from django.contrib import admin

class ArticleAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if obj.BooleanModelFieldName == True:
send_email(object.user.email)
obj.save()

Prawdopodobnie będziesz chciał upewnić się, że wiadomość e-mail nie jest wysyłana za każdym razem, gdy zapisywany jest model, ale zawiera bardziej precyzyjną logikę w ramach metody.