1

考虑这两个 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 约束?

4

1 回答 1

2

您可以直接分配外键id,然后保存模型:

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

哪里n是一个不存在的 id。matching query does not exist如果您尝试访问外键,那将失败。

于 2013-09-05T23:41:06.160 回答