Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 27, 2018 22:28:32

ivn
Зарегистрирован: 2017-01-13
Сообщения: 91
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по модели для таблицы

Добрый день.
Хочется создать таблицу в которой будет поле models.BooleanField(default=False) и что бы это поле могло иметь значение True ТОЛЬКО ДЛЯ ОДНОЙ ЗАПИСИ из всей таблицы.
Думается сделать в момент save выборку по фильтру True из этой таблицы и менять значение на False, а эту запись сохранять в True.

Может быть есть какое то готовое решение?
Спасибо.

Офлайн

#2 Сен. 28, 2018 08:08:27

Papa_Svin
Зарегистрирован: 2018-09-17
Сообщения: 138
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по модели для таблицы

ivn
Может быть есть какое то готовое решение?
Решение на уровне СУБД или на уровне Django? Понятно, что если в Джанге и есть что-то готовое (хотя его там нет), то оно будет делать что-то такое, что вы и предлагаете. Ну это же две строчки кода, чего там искать готового?

Офлайн

#3 Сен. 28, 2018 10:51:32

ivn
Зарегистрирован: 2017-01-13
Сообщения: 91
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по модели для таблицы

Мне кажется лучше валидатор настроить.
Мб на уровне СУБД?, раз уж создал тему.

Отредактировано ivn (Сен. 28, 2018 11:09:19)

Офлайн

#4 Сен. 28, 2018 11:09:06

Papa_Svin
Зарегистрирован: 2018-09-17
Сообщения: 138
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по модели для таблицы

ivn
Мб на уровне СУБД?, раз уж создал тему.
Ну, например, триггер завести

Офлайн

#5 Сен. 28, 2018 11:21:43

ivn
Зарегистрирован: 2017-01-13
Сообщения: 91
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по модели для таблицы

Papa_Svin
Подскажите, где посмотреть про триггеры (что такое триггеры и желательно совместно с джанго) и еще про индексы то же бы хорошо посмотреть.
Спасибо.

Офлайн

#6 Сен. 28, 2018 12:32:27

Slow
Зарегистрирован: 2017-07-26
Сообщения: 88
Репутация: +  4  -
Профиль   Отправить e-mail  

Вопрос по модели для таблицы

google: SQL, TRIGGERS, CONSTRAINTS

Но вообще при работе с джангой крайне не рекомендуется такое делать. Потому что джанга предполагает (если можно это так назвать) что знает о базе всё.
Если сделать такой констрейнт, то придётся ловить какое-то подобие IntegrityError при попытке засунуть в таблицу ещё один True.
Если сделать триггер, то возможно странное поведение (триггер, например, который при инсерте ИСТИНЫ заменяет ранее истинное на ложное), если джанга до этого прочитала предыдущую истинную запись, что-то вставила, и затем что-то хочет продолжить делать с ранее-истинной-записью

Лучше, в общем, делайте джангиными средствами, это три строчки кода.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version