Как настроить отправку объектов json на каналы Django? - PullRequest
0 голосов
/ 05 сентября 2018

Как настроить отправку объектов json на каналы Django? Чтобы убедиться, что при добавлении нового объекта в админ-панель, он сразу появился на передней панели в режиме реального времени. Может быть, у кого-то есть примеры. Был бы очень признателен.

Есть объект Фабрика:

models.py

class Factory(models.Model):

     OBJECT_CHOICES = (
            ('Завод', 'Завод'),
            ('Вышка', 'Вышка'),
            ('Хранилище', 'Хранилище'),
            ('АЗС', 'АЗС')
        )

    title = models.CharField(max_length=200)
    choice = models.CharField(max_length=15, choices=OBJECT_CHOICES, default = '')
    address = YmapCoord(max_length=200, start_query=u'Россия', size_width=500, size_height=500, unique = True)

Когда в / getFactory / делается запрос GET, выдается тип JSON

[
   {
    "title": "factory",
    "choice": "Завод",
    "address": [
        55.744607932133505,
        48.99357300960071
    ]
   }
]

1 Ответ

0 голосов
/ 05 сентября 2018

Прежде всего, вам нужен потребитель , и вы должны определить поле groups там.

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

Тогда ваш интерфейс должен каким-то образом подключиться к потребителю и прослушивать обновления. После этого вы можете отправлять новые сообщения из любого места вашего проекта. Например, с post_save сигнал.

from channels import Group
from django.db.models import signals
from django.dispatch import receiver


@receiver(signals.post_save, sender=Factory)
def notify_group(sender, instance, **kwargs):
    if kwargs['created']:
        group_name = 'your group'
        Group(group_name).send({'text': 'message or object'})
...