Django. Одновременное сохранение экземпляра записи БД несколькими пользователями

Необходимо реализовать механизм одновременного сохранения одной и той же записи в БД несколькими пользователями. Принцип следующий: Заявка открывается несколькими пользователями. Модель заявки имеет поле saveDate, которое хранит дату и время последнего сохранения. При открытии пользователь сохраняет параметр saveDate и перед записью в БД проверяет его, сравнивая с экземпляром заявки из БД. Если saveDate не изменился - производится запись в БД, иначе пользователь получает сообщение об изменении заявки в ходе редактирования другим пользователем. Пытаюсь реализовать этот механизм через view-представление, где запоминается saveDate, однако, т.к. view вызывается два раза - первый при инициализации формы для редактирования, второй - при записи формы. И saveDate, естественно, в данном случае не сохраняется.

Модель:

class Entry(models.Model):
    ...
    saveDate = DateTimeField()

View:

def entry(request, pk):
    ...
    entry = Entry.objects.get(id=pk)
    save_date = entry.saveDate # сохраняем маркер даты, времени последнего редактирования
    if request.method == 'POST':
        ...
        oldEntry = Entry.objects.get(id=pk)
        if save_date == oldEntry.saveDate: # проверяем маркер на изменение 
            entryForm.save()
            ...
        else: 
            # сообщение пользователю об изменении исходных данных    

Как в данном случае можно использовать маркер сохранения saveDate?

Может на этот случай есть стандартные методы блокировки записи БД при одновременном редактировании несколькими пользователями?


Ответы (0 шт):