Django模型外键字段在测试期间的迁移中不可用

2024-10-05 14:27:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个型号

class TransportOrder(SomeMixin, models.Model):
    order = models.ForeignKey(
        to="orders.Order",
        on_delete=models.PROTECT,
        related_name="transport_orders",
        help_text=_("Order which was used for creating"),
        null=True,
        blank=True,
    )
    # Other fields have been removed for simplicity

我在迁移中有转发功能

def forward(apps, schema_editor):
    TransportOrder = apps.get_model("transportorders", "TransportOrder")
    
    # There is no `order` field printed result.
    print(dir(TransportOrder))

    # I need to filter something by using `TransportOrder.order` foreign key field here. But I receive the error obviously.

由于apps.get_model函数提供的TransportOrder模型中没有order字段,因此我得到了以下错误

django.core.exceptions.FieldError: Cannot resolve keyword 'order' into field.

但是,这仅在运行测试时发生。否则就没有问题了。什么会导致这个问题


Tags: appstotruefieldforgetmodelmodels
2条回答

显然,在某些旧迁移中,makemigration创建的dependencies=[]是不正确的

在某些迁移中手动添加一些依赖项修复了该问题

尝试django测试工具,它被设计为能够很好地与项目协同工作,特别是与数据库和模型协同工作

每次运行测试时,Django都会构建自己的测试数据库,您可以从测试中填充项目中的对象

https://docs.djangoproject.com/en/3.2/topics/testing/

相关问题 更多 >