Как избежать конфликтов записи в администрации django?

StackOverflow https://stackoverflow.com/questions/838067

  •  10-07-2019
  •  | 
  •  

Вопрос

Предположим, есть два (или более) администратора django, которые прочитали запись базы данных, а затем изменили и сохранили ее. Проблем с базой данных нет, но некоторые администраторы будут удивлены, что записанная ими запись была перезаписана.

Решена ли эта проблема? Одним из способов будет явное «редактирование в процессе». кнопка, которая устанавливает флаг в записи. Если другой администратор читает ту же запись, а затем нажимает на кнопку " редактировать в процессе " он будет предупрежден о том, что в данный момент выполняется предыдущее редактирование. Или к записи может быть добавлено поле, которое увеличивается при сохранении записи. Если поле отличается от того, когда запись была прочитана, администратор получает предупреждение о том, что запись была изменена кем-то другим, так как он прочитал ее.

Есть ли нативный способ django справиться с этим?

Это было полезно?

Решение

Администратор Django не имеет встроенной защиты от записи. Было бы нетрудно добавить это самостоятельно. Лично я бы взял «поле номера версии» Подход.

Другие советы

Как правило, именно здесь вы хотите ознакомиться с функциями изоляции транзакций в вашей базе данных, потому что именно поэтому они есть.

Если вы действительно не хотите этого делать, существуют разные шаблоны для этого на уровне приложений, но канонического способа сделать это не существует - некоторые люди устанавливают своего рода «последний доступ». отметка времени и отказ в разрешении редактирования в течение определенного периода после этого, другие задают номера версий и т. д. и т. д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top