Я конвертирую старое приложение из ASP.NET + MSSQL в Django + Postgres. Существующий дизайн выглядит так:
create table foo
( id integer
, name varchar(20)
, current_status_id integer null
)
create table foo_status
( id integer
, foo_id integer
, status_date datetime
, status_description varchar(100)
)
Таким образом, у каждого foo есть несколько записей foo_history, но есть денормализованное поле current_status_id, которое указывает на последнюю запись истории.
Чтобы преобразовать данные, я просто определил foo.current_status_id как IntegerField, а не как ForeignKey, потому что Postgres будет (правильно) проверять пропущенные внешние ключи независимо от того, какую таблицу я загрузил первой.
Теперь, когда я преобразовал данные, я хотел бы снова получить все преимущества внешнего ключа для таких вещей, как запросы. Есть ли хороший способ справиться с этим, кроме изменения модели с IntegerField до того, как я сделаю syncdb для ForeignKey впоследствии?