在Django中,数据库关系的紧密性与测试的易用性之间是否存在约定?

在Django中,数据库关系的紧密性与测试的易用性之间是否存在约定?,django,database,database-design,Django,Database,Database Design,假设我有一个带有外键的模型: 类事物(models.Model): related_stuff=models.ForeignKey('app.stuff',blank=True,null=True,related_name='things',on_delete=models.PROTECT) 定义事物的方法(自身): 通过 这是非常容易和快速的测试,我只是创建了一个东西,然后就开始测试方法 但是,严格来说,事物应该总是有相关的东西,因此就正确的约束而言,这是我应该有的关系: 类事物(model

假设我有一个带有外键的模型:

类事物(models.Model):
related_stuff=models.ForeignKey('app.stuff',blank=True,null=True,related_name='things',on_delete=models.PROTECT)
定义事物的方法(自身):
通过
这是非常容易和快速的测试,我只是创建了一个
东西
,然后就开始测试
方法

但是,严格来说,
事物
应该总是有
相关的东西
,因此就正确的约束而言,这是我应该有的关系:

类事物(models.Model):
related\u stuff=models.ForeignKey('app.stuff',related\u name='things',on\u delete=models.PROTECT)
但是,说到测试,这意味着我必须在测试中进行大量的设置,创建
相关的东西。即使使用
model\u bakery
factory\u boy
这也会在我的测试中导致大量额外的行数和时间


在决定是否应该在数据完整性与开发和测试速度之间进行权衡时,需要考虑哪些关键问题?django社区对此是否有约定/主导意见?

取决于您正在运行的测试类型。我想说的是,您希望使您的模型尽可能精确到最终解决方案,并且假设您希望测试模型的方法,提供一个将伪造输入并将其与输出匹配的夹具。这意味着您将有两个测试。一个在db上,一个在方法上。