Как расширить представление администратора в Django? - PullRequest
0 голосов
/ 12 мая 2018

Я хотел бы расширить представление администратора, используемое для создания новой записи в базе данных.

Например, я могу создавать новые книги с их автором, категориями, датой и т. Д. Когда я создаю новую книгу, я хочу отправить уведомление всем пользователям, чей автор книги является одним из их любимых авторов.

Система уведомлений уже работает благодаря django-уведомлениям

Итак, мне просто нужно добавить такие вещи сразу после book.save () в представлении администратора:

writer = <the_author_selected_in_the_form> # writer ID
profiles = Profile.favorites_authors.through.objects.filter(authors_id=writer)
for profile in profiles:
    notify.send(profile.profile_id, recipient=profile.profile_id, verb='New book, called <book_title>, from <author_name>')

Спасибо

1 Ответ

0 голосов
/ 12 мая 2018

Я думаю, что «способ Джанго» сделать это с помощью сигналов. Примерно так:

from my.book.app import Book
from django.db.models.signals import post_save

def book_created(sender, instance, **kwargs):
    # Notification code goes here
    if kwargs["created"]:
        notify_users()

post_save.connect(book_created, sender=Book)

Подробнее о них можно прочитать в Django документах , также есть несколько замечательных статей для начинающих.

...