У меня есть два отдельных приложения Django с двумя разными базами данных. В APP1 мне нужны все записи из одной таблицы, которая находится в базе данных APP2. Кроме того, у одной из моих моделей APP1 есть ForeignKey, который указывает на модель APP2, и, согласно документам, это невозможно.
Поскольку Django не поддерживает отношения внешнего ключа, охватывающие несколько баз данных, я не знаю, что делать.
Официальные документы:
Если вы использовали маршрутизатор для разделения моделей по разным базам данных, любой внешний ключ и отношения «многие ко многим», определяемые этими моделями, должны быть внутренними для одной базы данных.
Это связано с ссылочной целостностью. Чтобы поддерживать отношения между двумя объектами, Django необходимо знать, что первичный ключ связанного объекта действителен. Если первичный ключ хранится в отдельной базе данных, невозможно легко оценить действительность первичного ключа.
В качестве решения я подумал об объединении этих двух баз данных, чтобы эти два приложения использовали одну и ту же базу данных. Но тогда у меня был бы беспорядок с моделями, потому что APP1 нужна только одна таблица из APP2, и ему не нужны остальные модели и таблицы БД. Кроме того, я почти уверен, что это вызовет проблемы (конфликты) при переносе из этих двух приложений в одну и ту же базу данных.
Я использую маршрутизатор Django DB, и это то, что я пробовал до сих пор:
class Car(models.Model):
_DATABASE = "cars"
color = models.TextField(max_length=1000)
...
class Employee(models.Model):
id = models.IntegerField()
car = models.ForeignKey(Car)
...
Это дает мне:
django.db.utils.OperationalError: (1054, "Unknow column 'car' in 'employees'")