我有世界各地/各大洲分开的桌子,以避免主要的钥匙冲突。我的模型名称为Customer"<RegionName>"
,其中RegionName
类似于北美NA
,大洋洲OCE
,欧洲EU
,亚洲ASIA
,SEA
为东南亚等,
在我看来,我需要根据网址中指定的区域使用正确的模型。我的网址结构为/fetch/customer/{region}/{customerName}
。如何根据{region}
参数给出的内容获得正确的模型?我知道我可以做一堆if else
条件,但在处理多个区域时这似乎相当愚蠢。
如果有可能的方式我可以有基本字符串Customer
并附加region
吗?如果给定的区域为NA
,我们的字符串将为Customer
+ NA
= CustomerNA
。如何获取此CustomerNA
字符串并获取名为CustomerNA
的实际Model类?
不确定这是否有点令人困惑。请告诉我是否很难理解。它本来可能听起来好一些,在翻译中迷失了。
答案 0 :(得分:3)
一种方法是:
CUSTOMER_MODELS = {
'NA': CustomerNA,
'EU': CustomerEU,
'Asia': CustomerAsia,
#...
}
并消费它,
model = CUSTOMER_MODELS.get(region)
如果您可以重新访问您的模型,我建议您确保更简单(您知道业务要求) - 示例
class Customer:
...
region = models.CharField(choices=(('NA', 'NA'), ('Asia', 'Asia'), ))
然后你可以废除所有复杂的逻辑