Архитектура Django приложений (теория)
По теории в Джанго разный бизнес-функционал одного проекта стоит разносить по отдельным аппам. Это позволит переиспользовать эти аппы в других проектах. Но что делать, если у нас app1 и app2 используют (или должны использовать) одну модель данных?
Если описывать модель только в app1 и импортировать ее в app2, то получается связанность функционала. Что на мой взгляд разрушает идею аппов. Если описать модель в каждом аппе, то при миграции будет соответственно создано две таблицы в БД.
Резонный вопрос, а правильная ли вообще такая архитектура приложения, когда связанность происходит либо на стороне БД, либо на стороне кода?
Приведу пример на сейте booking.com:
- Есть booking.com где физ.лицо может просматривать гостиницы и их бронировать
- Есть admin.booking.com где юр.лицо может регистрировать гостиницу
И там и там должна быть условная модель Hotels, в которой будут храниться гостиницы.
Если переложить такую модель на Джанго, то вижу, что это должны быть либо два отдельных проекта со своими БД. Между БД настраивается репликация данных. Либо это должны быть два разных аппа имеющих одну общую модель, но как ее тогда правильнее реализовывать?
И собственно основной вопрос: как правильно строить архитектуру приложения для подобных случаев?
Если ответ на вопрос длинный,то буду рад ссылкам или книгам, где это описано. Самому не удалось найти.