Вы запрашиваете данные базы данных в модели или представлении, Django
Это возможно глупый вопрос, но я новичок в Python/Django.
Я работал со многими другими фреймворками, и то, как работает MVC, - это модель, в которой вы делаете все ваши запросы, а затем вы получаете их из контроллера, чтобы отправить в представление.
В Django он говорит мне сделать эти запросы в файле view.py (контроллер в других фреймворках)
Пример:
Models.py
from django.db import models
class Moves(models.Model):
name = models.CharField(max_length=64)
description = models.CharField(max_length=500)
position_id = models.IntegerField()
is_offence = models.BooleanField(default=True)
views.py
def half_guard_moves(request):
half_guard_moves = Moves.objects.values().filter(position_id=2)
return render(request, "moves/halfguardmoves.html", {'half_guard_moves': half_guard_moves})
Это работает, но кажется странным, потому что на самом деле я делаю запрос в файле views(controller), а не в модели? Правильно ли я делаю или есть другой способ делать запросы непосредственно в модели?
Согласно документации Django, назначение файла models.py
- объявлять только таблицы. Например
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
В этом файле будет создана следующая команда SQL:
CREATE TABLE myapp_person (
"id" bigint NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL
);
Ответ на ваш вопрос. Нет, нет никаких запросов в объявлении моделей, вы делаете запросы в views.py
для получения экземпляров по мере необходимости.