问题描述
我有这个模型。
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
在某些旧迁移中不正确。
在一些迁移中手动添加一些依赖解决了这个问题。