Подписка на все изменения экземпляров модели
Я использую этот пример:
https://djangochannelsrestframework.readthedocs.io/en/latest/examples/model_observer.html
Я отображаю все данные из модели Post
на странице в таблице. Я решил использовать для этого websockets и застрял на этой проблеме:
Если я изменяю/добавляю/удаляю экземпляры модели с помощью админ-панели django - все работает нормально, но если я делаю изменения вручную в shell или мой celery worker обновляет базу данных - то ничего не происходит, в чем может быть проблема?
Мой код на данный момент:
consumers.py
from djangochannelsrestframework import permissions
from djangochannelsrestframework.generics import GenericAsyncAPIConsumer
from djangochannelsrestframework.mixins import ListModelMixin
from djangochannelsrestframework.observer import model_observer
from .models import Post
from .serializers import PostSerializer
class PostConsumer(ListModelMixin, GenericAsyncAPIConsumer):
queryset = Post.objects.all()
serializer_class = PostSerializer
permissions = (permissions.AllowAny,)
async def connect(self, **kwargs):
await self.model_change.subscribe()
await super().connect()
@model_observer(Post)
async def model_change(self, message, observer=None, **kwargs):
await self.send_json(message)
@model_change.serializer
def model_serialize(self, instance, action, **kwargs):
return dict(data=PostSerializer(instance=instance).data, action=action.value)
мой шаблон:
index.html
Нет ошибок, просто ничего не происходит.