Django 模型外键字段在测试期间的迁移中不可用
Django model foreign key field is not available in migrations during tests
我有这个型号。
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.
但是,这只会在 运行 我的测试时发生。否则没有问题。什么会导致此问题?
尝试使用 django 测试工具,它旨在与项目配合使用,特别是数据库和模型。
每次您 运行 测试时,Django 都会构建自己的测试数据库,您可以使用项目中的对象从测试中填充。
显然,makemigration
创建的 dependencies=[]
在一些旧的迁移中是不正确的。
在某些迁移中手动添加一些依赖项解决了该问题。
我有这个型号。
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.
但是,这只会在 运行 我的测试时发生。否则没有问题。什么会导致此问题?
尝试使用 django 测试工具,它旨在与项目配合使用,特别是数据库和模型。
每次您 运行 测试时,Django 都会构建自己的测试数据库,您可以使用项目中的对象从测试中填充。
显然,makemigration
创建的 dependencies=[]
在一些旧的迁移中是不正确的。
在某些迁移中手动添加一些依赖项解决了该问题。