Django Удалить поле "многие ко многим
У меня есть 2 модели User, которая является auth_user в Django, и HostCourse, которая имеет отношения "многие ко многим" с User
class HostCourse(TimeStamped, models.Model):
created_by = models.ManyToManyField(User, blank=True)
...
Когда я удаляю некоторые данные из HostCourse, возникает следующая ошибка:
ERROR: update or delete on table "courses_hostcourse" violates foreign key constraint "courses_hostcourse_c_hostcourse_id_ec1070c3_fk_courses_h" on table "courses_hostcourse_created_by"
Если я включу on_delete=models.CASCASE
, удалит ли он также пользователей соответствующего HostCourse? Если да, то как я могу найти обходной путь, чтобы удалялись курсы, а не пользователи?
Обычно вы делаете это в оболочке python следующим образом:
./manage.py shell
>>> HostCourse.objects.all().delete()
ManyToManyField создает новую таблицу, поэтому сначала нужно удалить все объекты в ней. Пользователи не будут удалены В db_shell вы должны сделать:
delete from courses_hostcourse_created_by;
delete from courses_hostcourse;