Большой обмен данными между несколькими моделями Django - PullRequest
0 голосов
/ 21 июня 2019

У меня 6 моделей, три из 2-х типов. Типы являются частными и общедоступными, но в этом случае все модели имеют одинаковые поля.

class AbstractModel(models.Model):
    text = models.CharField(max_length = 1)
    in_group = models.ForeignKey(GroupTable, on_delete=models.SET_NULL, null=True)
    class Meta:
        abstract = True
class Public1(AbstractModel):
    pass
class Public2(AbstractModel):
    pass
class Public3(AbstractModel):
    pass
class Priv1(AbstractModel):
    pass
class Priv2(AbstractModel):
    pass
class Priv3(AbstractModel):
    pass

class GroupTable(models.Model):
    private = models.BooleanField(default=True)
post_save.connect(herd_migration, sender=DecidingTable)

Хорошо, так что с этими моделями время для сигналов.py. Я пытаюсь перенести все char-поля из таблиц Public в Priv, а данные Public1 отправляются в Priv1, Public2 в Priv2 и Public3 в Priv3. Проблема в основном для конечного пользователя:

Модели разрабатываются как путь вложенной иерархии для конкретных целей проектирования. Когда группа переключает атрибут private на False, сигнал «отправляется», чтобы начать передачу данных всех записей в Priv1-3, которые находятся в этой конкретной группе, в Public1-3.

Я думал об этих двух вариантах:

1) Временно отключите группу, чтобы больше не отправлялись запросы POST, соответствующие группе, и быстро переносили все данные Priv1 в Public1, Priv2 в Public2 и Priv3 в Public3.

2) Добавьте таблицу, похожую на очередь, для добавления в публичные таблицы. Но тогда пользователи будут делать запрос POST к таблицам Priv или к таблице очередей?

Может быть, raw sql в Postgres?

Есть предложения?

Edit:

Другая идея - сначала скопировать все записи Priv1, затем Priv2, затем Priv3. Опять же, эти таблицы находятся в иерархии

...