Я немного почитал о проблемах параллелизма с sqlite, но не понимаю, как они применимы к Django, поскольку он по своей сути однопоточный. Я также не использую многопроцессорные модули. У меня также нет абсолютно никакого опыта в параллельном программировании, поэтому, если кто-то может определить, ПОЧЕМУ следующий код вызывает OperationalError: «база данных заблокирована», я был бы признателен.
просмотры.py
def screening(request, ovramt=None):
errors = []
if request.method == "POST":
form = ScreeningForm(request.POST)
if form.is_valid():
print "Woo valid!!"
return HttpResponse()
else: # GET
if ovramt is None:
o = Ovramt.objects.select_related(depth=1).latest("date_completed")
print "found?"
print o.id
else:
try:
o = Ovramt.objects.select_related(depth=1).get(id=ovramt)
except:
errors.append("OVRAMT NOT FOUND")
if o.residents.count() <= 0:
o.add_active_residents()
residents = list(o.residents)
модели.py
def add_active_residents(self):
ssa_res = SSA_Resident.objects.select_related(depth=1).filter(ssa=self.ssa, active=True)
for r in ssa_res:
self.residents.add(r.resident) # Fails Here
self.save()
Метод add_active_residents работает нормально, пока не будет вызван из модуля представлений. Есть ли открытое соединение с базой данных, открытое в представлении, которое предотвращает запись из модели? У кого-нибудь есть объяснение, почему этот код будет ошибкой?