# 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
那么,我怎样才能用编程的方式区分这两种唯一性冲突呢?在我的应用程序中,业务需求要求允许我的程序自动处理和纠正其中一种违规行为,而不是另一种违规行为(必须向用户报告)。