在Django中进行单元测试时如何处理损坏的约束?

时间:2013-09-05 00:07:51

标签: python django

考虑这两个Django模型:

MyModelA(models.Model):
    my_foreign_key = models.ForeignKey('MyModelB')

MyModelB(models.Model):
    some_stuff = models.CharField(max_length=10)

模型正确表示数据应该如何。问题是某些MyModelA记录具有不存在的MyModelB的外键。 (我正在使用MySQL。)

我无法修复损坏的数据,所以我正在编写代码来优雅地处理坏数据。

我的问题是我现在想测试代码,但我不能为不存在的对象创建外键,Django ORM不会让我。

如何创建单元测试时违反Django ORM约束?

1 个答案:

答案 0 :(得分:2)

您可以直接指定外键ID,然后保存模型:

m = MyModelA()
m.my_foreign_key_id = n
m.save()

其中n是不存在的ID。如果您尝试访问外键,则会因matching query does not exist而失败。