Django, Модели и Приложения - PullRequest
0 голосов
/ 25 июня 2011

Я новичок в Django и MVT, поэтому прошу прощения, если это глупый вопрос.Я просмотрел несколько похожих вопросов, но мне нужна дополнительная ясность и то, пытаюсь ли я что-то сделать правильно.

Вот упрощенная версия того, над чем я работаю.Допустим, я разрабатываю интерфейс Django для уже существующей базы данных.База данных старая, и другие системы добавляют в нее данные.Интерфейс Django будет доступен только для чтения.Простая структура с 4 таблицами содержимого:

  1. Виджеты
  2. Создатели (для простоты каждый виджет имеет одного Создателя)
  3. Клиенты
  4. Заказы (клиентзаказы «многие ко многим», заказы «виджетов многие ко многим»)

Я начал с создания приложения Django под названием «Виджет», которое отображает информацию о виджетах, и создания моделей для всех таблиц вбаза данных.Это прекрасно работает, с URL-адресом вроде / widget / 1234 я получаю информацию для Widget с идентификатором 1234, информацию из таблицы Creator и сколько раз она была заказана.

Теперь я хотел создать приложениеназывается «Клиент», который отображает информацию для клиентов (данные из таблицы клиентов, размещенные заказы, заказанные виджеты и т. д.).

Я поступаю неправильно?Должно ли быть отдельное приложение "Клиент"?

Если действительно имеет смысл иметь отдельное приложение "Клиент", что мне делать с моделями?Они идентичны моделям, используемым в приложении «Виджет», поскольку имеют дело с одними и теми же таблицами в одной базе данных.Я просто импортирую из другого приложения?Спасибо!

1 Ответ

3 голосов
/ 25 июня 2011

Нет, вам не нужно создавать отдельное приложение для каждой модели. Вы должны создать приложение для каждого отдельного набора функций в вашем проекте. Поскольку вы только учитесь, вы должны создать одно приложение (с названием вашего проекта) и использовать его для обучения.

Что касается моделей, то они представляют собой просто слой представления таблиц в вашей БД, который облегчает работу и справляется со многими сложностями, связанными с взаимодействием с вашей БД. Таким образом, в вашем случае вы должны создать модель для каждой таблицы в вашей существующей базе данных db: Widget, Creator (возможно, вы захотите сделать ссылку внешним ключом на вашу таблицу User), Customer, Order.

Способ, которым вы возвращаете конкретные данные, - через ваши представления. Так, например, чтобы получить все данные для определенного виджета с помощью URL-адреса в вашем примере, url / widget / 1234 будет указывать на функцию на вашей странице views.py, где вы будете запрашивать в своей базе данных необходимую информацию и отправлять это к вашему шаблону. В вашем примере запрос будет выглядеть примерно так:

widget = Widget.objects.get(id=1234)

Обратите внимание, что, поскольку у вас есть существующая база данных, вам придется переопределить стандартные правила именования db Dango. Вы можете прочитать больше о том, как это сделать, здесь: https://docs.djangoproject.com/en/dev/topics/db/models/

Однако лучший совет, который я могу вам дать, это отложить свой собственный проект / приложение на пару дней и просмотреть официальное руководство по Django и документацию. Особенно, когда вы впервые учитесь, это невероятно хорошо документировано и легко выучить:

https://docs.djangoproject.com/en/dev/

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