【发布时间】:2019-04-16 12:24:00
【问题描述】:
我有这两个模型(示例),当我试图运行我的测试时 - 它错误地说:no such table: my_app_modelA - 如果我向上滚动我可以看到它在创建 modelB 时被炸毁了(我认为这是由于应用了default)。有没有办法订购这些,以便modelA 总是在modelB 之前创建?还是我不应该将该方法作为默认属性引用?只是想让我的测试正常工作,这是我的症结所在。
我的模型如下所示:
class modelA(models.Model):
attribute = models.IntegerField()
active = models.BooleanField(default=False)
@classmethod
def get_active_attribute(cls):
return modelA.objects.get(active=True).attribute
class modelB(models.Model):
attribute = models.IntegerField(default=modelA.get_active_attribute())
我的问题是:
这是可以接受的做法吗?默认调用另一个模型方法?
有没有办法处理这些模型的创建,我可以保证首先创建
modelA,以便modelB可以在我的测试中成功创建?
【问题讨论】:
标签: python django python-3.x testing