Как это исправить, PostgreSQL ДО ОБНОВЛЕНИЯ триггера на выбранных столбцах, выполненных со стороны Django на столбцах, не связанных с Триггером? - PullRequest
0 голосов
/ 18 апреля 2019

По сути, я создаю приложение Django с базой данных PostgreSQL, теперь для заданной таблицы в базе данных я должен использовать триггеры для предотвращения обновления выбранных столбцов, триггер работает должным образом со стороны базы данных, делая то, что он сделал дляделать, предотвращая обновление выбранных столбцов и позволяя обновлять несвязанный столбец с помощью триггера.

Теперь со стороны Django всякий раз, когда я пытаюсь обновить поля / столбцы таблицы, которые не связаны с триггером, он запускает / выполняет триггер, предотвращая операцию обновления для тех несвязанных полей / столбцов и этот триггердаже выполняется при попытке добавить новую запись или данные со стороны Django, предотвращая вставку новой записи.

Может кто-нибудь помочь, пожалуйста?

Спасибо

1 Ответ

0 голосов
/ 19 апреля 2019

Я нашел решение своей проблемы.

Я создал триггер PostgreSQL для предотвращения обновления нескольких столбцов.Со стороны базы данных я проверил это и работает совершенно нормально.Проблема была со стороной Django.

В базе данных один столбец можно обновить, введя значение, он не связан с другими столбцами, поэтому нет ошибок при обновлении конкретного столбца.Например, в строке есть два поля: одно модифицируемое, а другое предотвращается с помощью триггера, поэтому, когда я изменяю это модифицируемое поле, оно будет изменено.

Проблема с Django, в Django всегда пишетсяВесь объектНапример, если у вас есть объект с двумя полями, одно из которых можно изменить, а другое нет, но оба сопоставлены в Django, при сохранении этого объекта Django обновит оба поля, даже если только одно или ни одно из них не изменилось.

Поскольку Django обновляет все поля, даже если было изменено только одно поле, триггер вызывался.

, поэтому мне пришлось искать опцию, которая позволит обновлять только указанные поляили только измененные / измененные поля, а не другие неизмененные поля.

Я нашел это update_fields ,

update_fields помогает мне определить, какие поля должны быть обновлены вместо обновления всей строки или всех полей.

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