Django отменить миграцию при пользовательской миграции - PullRequest
0 голосов
/ 08 октября 2018

В настоящее время я борюсь с пользовательскими миграциями 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

Похоже, я не могу обновить таблицу и затем изменить схему таблицы в одной миграции.

У вас, ребята, есть решениек этому?

Спасибо

...