У меня 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. Опять же, эти таблицы находятся в иерархии