Подтвердить что ты не робот

Шаблон Django MVC для моделей, не поддерживающих базу данных?

Я просто пробираюсь через Django, и мне это очень нравится, но у меня проблема, и я не уверен, какой типичный способ ее решить.

Предположим, что у меня есть представление, которое должно быть обновлено при обновлении какого-либо сложного объекта Python, но этот объект не управляется базой данных, скажем, что он управляется вызовами AJAX или непосредственно пользователем или чем-то.

Где идет этот код? Должна ли она по-прежнему идти в models.py????

4b9b3361

Ответ 1

Ваш models.py может быть (а иногда и пустым). Вы не обязаны иметь модель, которая сопоставляется с базой данных.

У вас должен быть файл models.py, чтобы сделать Django admin счастливым. Имя файла models.py важно, и проще иметь пустой файл, чем пытаться изменить файл, ожидаемый различными командами администратора.

"Модель" - в общем случае - не нужно отображать базу данных. "Модель" - как общая составляющая дизайна MVC - может быть чем угодно.

Вы можете - и часто - определять свой собственный "модельный" модуль, который использует ваши взгляды. Просто не называйте это models.py, потому что это путает администратора Django. Назовите это чем-то значимым для вашего приложения: foo.py. Этот foo.py управляет реальными вещами, которые лежат в основе вашего приложения, - не обязательно подкласс Django Model.model.

Django MVC не требует сопоставления базы данных. Он явно ожидает, что модуль с именем models.py имеет в нем сопоставление базы данных. Итак, используйте пустой models.py, если у вас нет фактического сопоставления базы данных.

Ваш views.py может использовать

import foo

def index( request ):
    objects = foo.somelistofobjects()
    *etc.*

Django позволяет легко работать без сопоставления базы данных. Ваша модель может легко быть чем угодно. Просто не называйте это models.py.


Edit.

Представлены ли виды в моделях? Нет.

При обновлении модели контроллером представления получат уведомление? Нет.

Является ли модель строго репрезентацией данных, поскольку это действительно MVP? Да.

Прочитайте документы Django. Это просто.

Веб-запрос → Отображение URL → Функция просмотра → Шаблон → Ответ.

Модель может использоваться функцией просмотра. Модель может быть отображением базы данных, или это может быть любая другая вещь.