Ответ 1
Используйте атомную транзакцию :
Атомность - определяющее свойство транзакций базы данных. атомный позволяет нам создать блок кода, в котором гарантируется атомарность в базе данных. Если блок кода успешно завершен, изменения привязаны к базе данных. Если есть исключение, изменения откатываются.
Примеры:
from django.db import transaction
with transaction.atomic():
model1.save()
model2.save()
и
from django.db import transaction
try:
with transaction.atomic():
model1.save()
model2.save()
except IntegrityError:
handle_exception()