2012-01-05 1 views
1

Выполняет ли Django автоматическое обновление дочерних записей при обновлении основного внешнего ключа? Может ли он быть отключен.Выполняет ли Django автоматическое обновление дочерних записей при обновлении основного внешнего ключа?

Я вижу функцию on.delete, но не функцию on.update в документах Django.

/vfclistsGUY

+1

какая часть детской записи вам видна в этом случае нуждающейся в обновлении? не могли бы вы привести более конкретный пример (точнее, я не уверен, что дети вообще нуждаются в обновлении) – second

+0

@second Даже если основная запись не связана напрямую с дочерними записями формы, мне все равно нужны дочерние записи, которые нужно обновить, если главный ключ изменяется. Из ответов, полученных ниже, появляется Django, не поддерживает это – vfclists

+0

Почему главный ключ изменился? Этого никогда не должно было случиться. –

ответ

1

Джанго не трогать детей вообще, если вы не скажете ему. Даже в случае DELETE CASCADE это принудительное выполнение на уровне базы данных, а не в Django.

Если вы используете встроенные FormSets для детей вместе с формой основного объекта (или с помощью Внутристрочные в админ ... тоже самое), то Django будет обновлять детей, а если есть какие-либо изменения в них. В противном случае, нет, Django ничего не делает.

Если вам нужно обновить детей при сохранении, вы должны переопределить способ вашей модели save, чтобы делать все, что нужно сделать детям, или использовать сигнал post_save.

+1

Это правильно, за исключением того, что каскад удаления * * выполняется Django на уровне Python, независимо от ограничений базы данных. –