Django:如何依赖可以切换的外部ID?

Django:如何依赖可以切换的外部ID?,django,database,rdbms,Django,Database,Rdbms,考虑以下场景: 我们的Django数据库对象必须依赖于外部服务ESA提供的ID——这是因为我们使用此ID直接从外部服务获取尚未创建的对象的信息。ESA可能很快就会关闭,所以我们也会从外部服务B ESB中提取关于相同对象的信息,并将它们保存为备用项 由于这些ID在视图和URL中高度依赖,因此理想的方案是使用@property: @property dynamic_id = ESA_id 然后,如果ESA关闭,我们可以通过将dynamic_id更改为ESB_id来轻松切换。但是,问题是属性不能用于

考虑以下场景:

我们的Django数据库对象必须依赖于外部服务ESA提供的ID——这是因为我们使用此ID直接从外部服务获取尚未创建的对象的信息。ESA可能很快就会关闭,所以我们也会从外部服务B ESB中提取关于相同对象的信息,并将它们保存为备用项

由于这些ID在视图和URL中高度依赖,因此理想的方案是使用@property:

@property
dynamic_id = ESA_id
然后,如果ESA关闭,我们可以通过将dynamic_id更改为ESB_id来轻松切换。但是,问题是属性不能用于queryset筛选器和各种其他场景,在这种情况下,这也是必须的

我目前的想法是将ESA_id、ESB_id和dynamic_id分别保存为常规字段,并分配dynamic_id=ESA_id,然后,如果ESA关闭,只需检查对象并执行dynamic_id=ESB_id


但我觉得一定有更好的方法?

将ESA_id和ESB_id字段放在同一个表中是一个很好的解决方案,然后您可以设置一些默认的_SERVICE_id='ESA_id'.'ESB_id',您的代码根据这个选项更改查找

在这里,您可以看到一个动态创建过滤器的方法

谢谢。我的数据库中确实有这两个。问题是如何动态引用它们——这意味着,如果ESA崩溃,我如何通过更改视图中的引用切换到ESB;如果您更改视图的查询集以引用您在momtent中使用的id,它将起到作用。