Удаление Django из модели Site не приведет к каскадному удалению связанных моделей

У меня есть проект django, в котором сейчас размещено несколько сайтов, и теперь мне нужно разделить их на разные проекты с разными базами данных.

Поэтому я клонировал проект и подумал, что удаление записей в модели сайта приведет к каскадному удалению всех данных, связанных с сайтами, которые я удаляю, и оставит те, которые относятся к записи сайта, которую я храню.

У меня есть следующий код в команде управления для удаления сайтов:

Site.objects.filter(~Q(domain=options.get("domain"))).delete()

Но я получаю такую ​​ошибку:

django.db.utils.IntegrityError: update or delete on table "django_site" violates foreign key constraint "core_staticpage_site_id_fkey" on table "core_staticpage"
DETAIL:  Key (id)=(4) is still referenced from table "core_staticpage".

Эта ошибка относится к ForeignKey и ManyToManyField, версия Django — 1.4.3.


person James Lin    schedule 27.02.2013    source источник
comment
Извините, что вы хотите этим сказать?   -  person James Lin    schedule 27.02.2013
comment
Но разве это не то, что я описал в вопросе? Связанные данные в модели StaticPage должны быть удалены каскадно с удалением связанной записи в модели сайта.   -  person James Lin    schedule 27.02.2013
comment
да я знаю, я просто говорю вам другое решение. Почему бы не переписать свои коды, сначала оценить статическую страницу с id сайта и удалить ее, прежде чем удалять основные данные на сайте. Это твой вариант...   -  person catherine    schedule 27.02.2013
comment
ну, да, это моя текущая работа, но мне интересно, почему она не удаляет каскадно. Спасибо за попытку помочь.   -  person James Lin    schedule 27.02.2013
comment
У меня нет знаний об этом, но я попытаюсь понять, почему, чтобы узнать что-то новое :), и я опубликую причину здесь.   -  person catherine    schedule 27.02.2013
comment
возможно, это поможет вам: stackoverflow.com/questions/2475249/   -  person catherine    schedule 27.02.2013
comment
@catherine Я не думаю, что в проекте есть перезапись метода on_delete.   -  person James Lin    schedule 27.02.2013
comment
Если core.StaticPage принадлежит вам, попробуйте установить параметр on_delete в ForeignKey на Sites, все, кроме models.PROTECT, должно работать, но это зависит от того, что вы хотите, чтобы произошло при удалении сайта.   -  person Lorenzo Peña    schedule 03.07.2015