我们将 Django 用于在线网店,并希望升级到 Django 4。但是,由于在测试分支上升级,我们遇到了一个问题,我将在此处重点介绍。我们服务于两个不同的市场,我们称它们为市场 A 和 B :) 由于这两个市场可以具有不同的功能,INSTALLED_APPS
因此我们的填充如下:
MARKET_SPECIFIC_APPS = {
MARKET_A: [
'market_a.apps.MarketAConfig',
'payment_system_a.apps.PaymentSystemAConfig'
],
MARKET_B: [
'market_b.apps.MarketBConfig',
'payment_system_b.apps.PaymentSystemBConfig',
],
}
if MARKET in MARKET_SPECIFIC_APPS:
# If there is a market-specific app, add it to INSTALLED_APPS
INSTALLED_APPS += MARKET_SPECIFIC_APPS[MARKET]
但是,在为每个市场运行 MARKET 特定测试时,只能MARKET_A
通过。MARKET_B
现在抛出一个错误,因为从 Django 3.2 升级到 Django 4
RuntimeError: Model class payment_system_b.models.payment.Payment doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
意思是,这个测试仍在运行,INSTALLED_APPS
即使它不应该包含它,测试运行器也会包含它。
Django 4 更新日志中缺少关于此的任何更改吗?在升级到 Django 4 之前,运行这些特定于市场的测试运行良好