Я смотрю состояние изоляции/чтения только в Django (1.6), и я ищу способ сделать запрос возвращать объекты, которые являются неизменяемыми.Вопрос о неизменяемой модели Django
Я ищу, чтобы соответствовать что-то вроде следующего обертывания обычного дб атомарности апите
MyModel.objects.filter(foo="bar").all(read_only=True)
Моего текущее мышление это будет пользовательским менеджером, но я бы потенциально как-то, что может быть добавлено в во время выполнения, как:
read_only(MyModel.objects.filter(foo="bar").all())
Без слишком много вуду или сделать их неуправляемыми (вариант бросить исключение на изменение состояния будет хорошо).
Главное, чтобы модель поддерживала как режим чтения, так и тип запроса на чтение и запись по умолчанию в идеале с изменениями, ограниченными для кода, который требуется для чтения только для чтения.
Мой другой вариант что-то вроде:
with isolation(raise_exception=True):
m = MyModel.objects.get(id=foo)
m.do_unknown_thing_that_may_mutate()
Есть ли существующие решения я отсутствующими на более высоком уровне, чем в базе данных?
Да, это хороший вариант, поскольку существуют (некоторые) прокси-модели, используемые для косвенности в том виде, в каком они стоят, а также сохраняли бы усилия по рефакторингу по запросам. +1 –
Мое общее требование может быть ошибочным на уровне объекта/модели, однако, поскольку я хочу, чтобы все изменения состояния вообще отображались в графике вызовов из заданного корня, что может означать контекст, который скрывает транзакцию в конец :( –