Django:如何依赖可以切换的外部ID?
Django: How to depend on an externally ID, which can be switched?
考虑以下场景:
我们的 Django 数据库对象必须依赖外部服务 A (ESA
) 提供的 ID - 这是因为我们使用此 ID 从外部提取有关尚未创建的对象的信息直接地。 ESA
可能很快就会关闭,因此我们也从外部服务 B (ESB
) 中提取有关相同对象的信息,并将它们保存为后备。
因为这些 ID 在视图和 URL 中高度依赖,理想的情况是使用 @属性:
@property
dynamic_id = ESA_id
然后,如果ESA
关闭,我们可以通过将dynamic_id
更改为ESB_id
来轻松切换。但是,这个问题是属性不能用于查询集过滤器和各种其他场景,这在这种情况下也是必须的。
我目前的想法是直接将ESA_id、ESB_id、dynamic_ID分别保存为常规字段赋值dynamic_ID = ESA_id
,然后,万一[=11] =] 关闭,只需遍历对象并执行 dynamic_ID = ESB_id
.
但我觉得一定有更好的办法吧?
在同一个 table 中包含 ESA_id 和 ESB_id 字段是一个很好的解决方案,然后你有某种设置 (DEFAULT_SERVICE_ID='ESA_id' |'ESB_id') 并且您的代码会根据此选项更改查找。
在这里你可以看到动态创建过滤器的方法
考虑以下场景:
我们的 Django 数据库对象必须依赖外部服务 A (ESA
) 提供的 ID - 这是因为我们使用此 ID 从外部提取有关尚未创建的对象的信息直接地。 ESA
可能很快就会关闭,因此我们也从外部服务 B (ESB
) 中提取有关相同对象的信息,并将它们保存为后备。
因为这些 ID 在视图和 URL 中高度依赖,理想的情况是使用 @属性:
@property
dynamic_id = ESA_id
然后,如果ESA
关闭,我们可以通过将dynamic_id
更改为ESB_id
来轻松切换。但是,这个问题是属性不能用于查询集过滤器和各种其他场景,这在这种情况下也是必须的。
我目前的想法是直接将ESA_id、ESB_id、dynamic_ID分别保存为常规字段赋值dynamic_ID = ESA_id
,然后,万一[=11] =] 关闭,只需遍历对象并执行 dynamic_ID = ESB_id
.
但我觉得一定有更好的办法吧?
在同一个 table 中包含 ESA_id 和 ESB_id 字段是一个很好的解决方案,然后你有某种设置 (DEFAULT_SERVICE_ID='ESA_id' |'ESB_id') 并且您的代码会根据此选项更改查找。
在这里你可以看到动态创建过滤器的方法