Например, если у меня есть эта модель:
# foo/models.py
# Python standard library
from uuid import uuid4
# Django
from django.db import models
class Foo(models.Model):
uuid_1 = models.UUIDField(default=uuid4, unique=True)
uuid_2 = models.UUIDField(default=uuid4, unique=True)
И затем я создаю ее экземпляры:
# Python standard library
from uuid import uuid4
# Django
from django.db import IntegrityError
# foo app
from foo.models import Foo
const_uuid_1 = uuid4()
const_uuid_2 = uuid4()
first_foo = Foo.objects.create(uuid_1=const_uuid_1, uuid_2=const_uuid_2)
# violate `uuid_1` uniqueness
try:
Foo.objects.create(uuid_1=const_uuid_1)
except IntegrityError as e:
pass
# violate `uuid_2` uniqueness
try:
Foo.objects.create(uuid_2=const_uuid_2)
except IntegrityError as e:
pass
Итак, как я могу разграничить два нарушения уникальности программно?В моем приложении бизнес-требования диктуют, что моей программе разрешено автоматически обрабатывать и исправлять одно из нарушений, но не другое (о котором необходимо сообщать пользователю).