Я вижу post_delete
огнь по модели перед экземпляром фактически удаляется из базы данных, которая противоречит https://docs.djangoproject.com/en/1.6/ref/signals/#post-deleteКак удалить post_delete перед удалением в Django?
Обратите внимание, что объект больше не будет находиться в базе данных, так что будьте очень осторожны, что вы делаете с этим экземпляром.
Если посмотреть в базе данных, запись сохраняется, если повторный запрос с использованием ОРМ, запись возвращается, и эквивалентно, например:
>>> instance.__class__.objects.get(pk=instance.pk) == instance
True
я не имею много соответствующих код, чтобы показать, мой сигнал выглядит следующим образом:
from django.db.models.signals import post_delete, post_save
@receiver(post_delete, sender=UserInvite)
def invite_delete_action(sender, instance, **kwargs):
raise Exception(instance.__class__.objects.get(pk=instance.pk) == instance)
- Я удалить этот экземпляр непосредственно, это не отношение чего-то другого, что удаляется
- Моя модель довольно нормально смотрит
- Мой взгляд является родовым DeleteView
- Я не нашел никаких транзакционных декораторов везде - которая была моя первая мысль о том, как это может происходить
Любой мысли о том, где я начну отлаживать, как это происходит? Кто-нибудь знает об этом как о известной ошибке, я не могу найти никаких билетов, описывающих какое-либо поведение, подобное этому, - также я уверен, что это работает, как и ожидалось, в других местах моего приложения, которые, по-видимому, не затронуты.
Если я разрешаю выполнение продолжить, экземпляр в конечном итоге удаляется ... так что это не похоже на то, что он присутствует, потому что он не может его удалить (достаточно уверен, что post_delete не должен срабатывать в этом случае).
Какую базу данных вы используете? Я не могу воспроизвести в Django 1.7. Большие изменения в управлении транзакциями были сделаны в 1.6, поэтому у меня нет никаких объяснений. – Alasdair
Можете ли вы разместить свои настройки БД? –