Удаление объекта класса модели django без предупреждения об иностранном ключе - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть две таблицы в MySql, созданные с использованием моделей django. Одна - модель Стьюдента, другая - модель посещаемости.

class Attendance(BaseModel):
    stu = models.ForeignKey(Students, verbose_name=_("Student"))

Я не поместил "on_delete = models.PROTECT" в stu в классе Attendance., потому что мне нужно иметь возможность удалять объект Student без предупреждения защиты, если этот Student определен в «Посещаемости» как Foreignkey из класса «Студенты».

Теперь, когда я удаляю объекты учеников, записи, связанные с Foreignkey, в «Attendance» такжеудалено.

Я хочу удалить объекты учеников без предупреждения.Но я хочу, чтобы связанные записи внешних ключей в Посещаемости оставались там для исторических отчетов.

Объекты Студенты будут удаляться без предупреждения, а строки, связанные с внешними ключами в Посещаемости, не будут удаляться.

1 Ответ

0 голосов
/ 07 декабря 2018

По вашему описанию, кажется, вы должны использовать on_delete=models.SET_NULL.С помощью этого метода значения внешнего ключа не удаляются, вместо этого для их идентификатора отношения к удаленному элементу будет установлено значение null.

Таким образом, объект Student будет удален, а для значения stu будет установлено значение Null.

...