Django моделей из другого проекта - PullRequest
0 голосов
/ 03 марта 2020

В настоящее время у меня есть Django проект для интернет-магазина. Он имеет много моделей, таких как заказ, продукт и другие. Этот проект является относительно большим и имеет более 40 моделей и более 8 приложений.
Теперь мне нужно создать платформу администратора для магазина. На этой платформе я должен видеть все заказы, сделанные всеми пользователями, всеми компаниями, которые продают свои товары в моем магазине, и много других данных. Очевидно, что он должен использовать ту же базу данных, которую использует магазин, что приводит меня к использованию тех же моделей для работы с данными, что и проект Shop.
Вот где у меня проблема. Каким-то образом мне нужно получить доступ к моделям из проекта Shop в проекте Admin.
Я вижу несколько решений:

  1. Чтобы создать пакет pip из моего проекта Shop и импортировать его в проект Admin. Однако мой проект магазина все еще находится в активной разработке, и я очень часто вносю изменения в его код, поэтому мне придется пересобирать и переустанавливать его каждый раз, когда я делаю изменения. Учитывая это, я думаю, что это не вариант.
  2. Использовать API магазина в проекте Admin. Под этим я подразумеваю, что я не буду получать доступ к базе данных напрямую из проекта Admin, но буду через API магазина. Однако API-интерфейс Shop не очень быстрый, и если его будет использовать проект Admin, то он будет еще медленнее. Такая медлительность недопустима, поэтому это тоже не вариант.
  3. Дублируйте все файлы моделей Магазина в проект Admin и сохраняйте их синхронизированными все время. Под этим я подразумеваю буквально скопировать models.py и tests.py из проекта магазина и вставить их в проект администратора в те же папки приложений, что и в проекте магазина. Кроме того, это означает, что каждый раз, когда я делаю изменения в этих файлах, мне нужно вносить те же самые изменения во второй проект, который является довольно плачевным. Тем не менее, эти параметры выглядят мне наиболее симпатично, так как я, по крайней мере, понимаю, как их реализовать.
  4. Добавьте проект Shop в PYTHONPATH и импортируйте модели оттуда. Однако я уже пробовал это сделать и не смог Django принять такой импорт. Но я думаю, что такой подход не лучше, чем в третьем варианте. Более того, это еще хуже, потому что для того, чтобы он работал на рабочем сервере, мне нужно иметь весь проект Shop где-нибудь на сервере. Это нормально, если проекты Admin и Shop находятся на одном сервере, но как только я их разделяю, у меня появляются неиспользуемые файлы, по крайней мере, на сервере Admin (файлы проекта Shop). Итак, я думаю, что этот вариант хуже третьего и его не стоит рассматривать.

Итак, как вы видите, все варианты, которые у меня на уме, беспорядочные и запуганные, и я интересно, есть ли лучшие решения, которые я могу использовать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...