微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有这个模型。

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.

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

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

但是,这仅在运行我的测试时发生。否则没有问题。什么可能导致此问题?

解决方法

试用 django 测试工具,它旨在与项目配合使用,特别是与数据库和模型配合使用。

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

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

,

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

在一些迁移中手动添加一些依赖解决了这个问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。