Есть ли способ «заблокировать» страницу в случае, если другой пользователь редактирует - DJANGO - PullRequest
0 голосов
/ 19 марта 2020

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

Я пытался найти что-то в inte rnet, но я не нашел ничего полезного для DJANGO.

Большое спасибо за некоторые рекомендации, как это сделать.

1 Ответ

0 голосов
/ 19 марта 2020

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

Вам нужно сделать это следующим образом.

has_lock = Page.objects.filter(id=page_id).filter(
    Q(editing_user__isnull=True)
    | Q(editing_user=request.user)
).update(editing_user=request.user)
if not has_lock:
    # Do something here to when another user is editing the page.
    # Raise 404, message the user and redirect, it's up to you.
# continue the editing view flow.

Если вы выполните go этот маршрут вам также потребуется обработать сброс этого значения и его истечение.

...