django - 在 transaction.atomic() 中创建期间未抛出 IntegrityError
问题描述
我想创建一个带有 FK 到引擎的汽车。我还想将记录保存到已创建 Car 的审计表中;我在该审计记录中包含了引擎的 ID。
我正在使用 Django Rest 框架。这是我的“创建”序列化程序代码:
@transaction.atomic
def create(self, validated_data):
try:
with transaction.atomic():
car = Car.objects.create(**validated_data)
except Exception as e:
raise serializers.ValidationError("my message")
a_function_that_creates_an_audit_record()
问题是,如果engine_id=0
invalidated_data
并且没有Engine
对象的 anid
为 0,则 noException
被抛出,并且except ...
不会被触发。执行继续a_function_that_creates_an_audit_record()
,在那里我做了类似的事情car.engine.id
,在那里我得到了一个 IntegrityError ,说Engine
anid
为 0 不存在。
按照这里的文档
做错了什么?有什么我想念的吗?
解决方案
推荐阅读
- javascript - GTM - 自定义 JS - 变量的返回值,除非它为空
- python - 我正在使用 python 3.7.7,但在导入 tensorflow 时遇到问题
- javascript - 如何选择/使用元素的子元素。Javascript
- rust - 如果可能,实现复制的类型是否会被移动?
- javascript - 在javascript中关闭弹出窗口时将子网址发送给父母
- python - 在熊猫中导入文本文件时跳过给定列的单词中的空格
- wordpress - 以编程方式更新 ACF 选择字段数据
- android-studio - 无法检测 xml 中的对象 - Kotlin
- dart - ponnamkarthik/toast/fluttertoast/MethodCallHandlerImpl.kt 编译颤振时
- angular - Angular 8. 模板驱动的表单元素条件必需属性