У меня есть ситуация, когда в определенном исключительном случае я должен продолжать отлавливать ошибку и продолжать выполнение кода. В настоящее время мой код выглядит так:
s = TestSerializer(...)
if s.is_valid():
instance = s.save()
perform_some_query() # Django yells here
class TestSerializer(serializers.ModelSerializer):
def create(self, request, *args, **kwargs):
try:
return super().create(request, *args, **kwargs)
except SomeError as err:
if this_is_the_super_exotic_case:
return None # Don't shout, just continue silently and don't create an object
raise
Проблема в том, что Django кричит на меня при выполнении perform_some_query()
(см. Строку 3 фрагмента кода), говоря, что:
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block. What is the reason for this?