假设我有这个模型定义:
class Foo(Model):
...
class Bar(Model):
some_m2m_field = ManyToManyField(Foo)
这个代码:
bar = Bar.objects.create()
bar.some_m2m_field.set(an_id_array_with_some_invalid_pks)
当我正常运行时,最后一行应该抛出一个
IntegrityError
. 但是,如果我从
django.test.TestCase
,最后一行不会抛出错误。而是等到
_post_teardown()
抛出
积分误差
.
下面是一个小项目来说明这个问题:
https://github.com/t-evans/m2mtest
我该怎么解决?我想这是可以配置的,但我还没找到…
后续问题:
最后,当有坏的ID传递给
m2m_field.set()
方法(我需要单元测试来验证错误的id是否被正确处理,这就是为什么延迟
积分误差
在单元测试中不起作用)。
我知道我可以通过在数组上循环并为每个id点击一个db来找到坏id。
set()
方法忽略/删除错误的ID?