考虑这两个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约束?
答案 0 :(得分:2)
您可以直接指定外键ID,然后保存模型:
m = MyModelA()
m.my_foreign_key_id = n
m.save()
其中n
是不存在的ID。如果您尝试访问外键,则会因matching query does not exist
而失败。