В настоящее время я борюсь с пользовательскими миграциями Django и, более конкретно, с возможностью его возврата.
У меня есть модель UserSubscription с внешним ключом 'Subscription', который представляет подписку с ценой, именем, типоми т. д. UserSubscription отслеживает каждое событие, происходящее с нашим платежным сервисом (последний платеж, ошибки, дата подписки и т. д.)
Моя миграция удаляет внешний ключ этой подписки и добавляет новый UserConditionalOffer (которыйотслеживать подпрограмму с помощью рекламных или специальных предложений)
воспроизведение миграции вперед работает хорошо, но при воспроизведении в обратном направлении мне нужно удалить UserConditionalOffer и заново создать внешний ключ подписки со значением по умолчанию.
Насколько я понимаю, Django будет выполнять эти операции, но не сможет заполнить таблицу значениями подписки.
Модель UserSubscription:
class UserSubscription(models.Model):
user = models.ForeignKey(User, verbose_name = 'user', null = False, blank = False)
user_conditional_offer = models.ForeignKey(UserConditionalOffer, verbose_name = 'user conditional offer', null = False, blank = False)
...
# removed line : subscription = models.ForeignKey(Subscription, verbose_name = 'subscription', null = False, blank = False)
Как видите, подписка не может быть нулевой.Поэтому, когда Django возвращает эту миграцию, она создает подписку поля в UserSubscription, но оставляет ее нулевой, и не удается.
Мне просто нужно установить подписку на 1 (подписка по умолчанию)
Я пыталсяиспользовать migrations.RunSQL с reverse_sql, но я получаю:
cannot ALTER TABLE "vadom_billing_user_subscription" because it has pending trigger events
Похоже, я не могу обновить таблицу и затем изменить схему таблицы в одной миграции.
У вас, ребята, есть решениек этому?
Спасибо