Рассмотрим следующий сценарий:
Наши объекты базы данных Django должны полагаться на идентификаторы, предоставляемые внешней службой A (ESA
) - это потому, что мы используем этот идентификатор для извлечения информации об объектах, которые еще не созданы, из внешнего напрямую. ESA
может вскоре отключиться, поэтому мы также извлекаем информацию об этих же объектах из внешней службы B (ESB
) и сохраняем их как запасной вариант.
Поскольку на эти идентификаторы в значительной степени влияют представления и URL-адреса, идеальным сценарием было бы использование @property:
@property
dynamic_id = ESA_id
И затем, если ESA
выключается, мы можем легко переключиться, изменив dynamic_id
на ESB_id
. Однако проблема заключается в том, что свойства нельзя использовать в фильтрах наборов запросов и других сценариях, что также необходимо в этом случае.
Моя текущая идея - просто сохранить ESA_id, ESB_id и dynamic_ID как обычные поля отдельно и назначить dynamic_ID = ESA_id
, а затем, в случае отключения ESA
, просто перейти по объектам и выполнить dynamic_ID = ESB_id
.
Но я чувствую, что должен быть лучший путь?