Вы запрашиваете данные базы данных в модели или представлении, 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 для получения экземпляров по мере необходимости.

Вернуться на верх