AttributeError: объект типа «Задача» не имеет атрибута «модели»

В нем говорится, что у моего объекта Task нет моделей атрибутов. Я пытался проверить, есть ли у меня какой-нибудь плохой случай, но не думаю, что он есть. просмотры.py:

from django.shortcuts import render, get_object_or_404, redirect
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login, logout
from django.contrib import messages
from .forms import CreateTask
from .models import Task


def Home(request):
    return render(request, "Home.html")

def task_view(request):
    current_user = request.user.id

    task = Task.models.all.filter(user=current_user)
    context = {"task": task}
    
    return render(request, "task_view.html")

def task_creation(request):
    form = CreateTask()
    if request.method == "POST":
        form = CreateTask(request.POST)

        if form.is_valid():

            task = form.save(commit=False)
            task.user = request.user

            task.save()

            return redirect("/Home/task_view/")
    
    context = {"form":form}

    return render(request, "task_creation.html")

модели.py:

from django.db import models
from django.contrib.auth.models import User
import datetime

class Task(models.Model):
    title = models.CharField(max_length=100, null=True)
    description = models.CharField(max_length=5000, null=True, blank=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)

блок ошибок:

Django version 5.0.2, using settings 'task_manager.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Internal Server Error: /Home/task_view/
Traceback (most recent call last):
  File "C:\Users\lubos\AppData\Local\Programs\Python\Python312\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\lubos\AppData\Local\Programs\Python\Python312\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\lubos\OneDrive\Plocha\task_manager\tasks\views.py", line 16, in task_view
    task = Task.models.all.filter(user=current_user)
           ^^^^^^^^^^^
AttributeError: type object 'Task' has no attribute 'models'
[23/Apr/2024 16:59:12] "GET /Home/task_view/ HTTP/1.1" 500 63463

Я попробовал проверить, не опечатался ли я где-нибудь, но, кажется, нет. Все в одном файле.
Учебник, который я прошёл (не стал следовать ему, так как у меня был свой код, но думаю, у меня есть всё то же самое, что и должно быть):
https://thewikihow.com/video_Clf60pllEN8&t=490s

Я думаю, вы имели в виду Task.objects, а не Task.models.

John Gordon 23.04.2024 17:11

Если я это сделаю, я получаю эту ошибку: объект «функция» не имеет атрибута «фильтр», также в учебнике он используется так же, как и я: youtu.be/Clf60pllEN8?t=1894

Lubomir.kunc 23.04.2024 17:19

неважно, обнаружил, что у него в уроке ошибка, исправил ее позже

Lubomir.kunc 23.04.2024 17:26
Task.objects.all().
willeM_ Van Onsem 23.04.2024 17:27
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
260
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я изменил Task_view в view.py на это:

защита Task_view (запрос):

current_user = request.user.id

task = Task.objects.all().filter(user=current_user)
context = {"task": task}

return render(request, "task_view.html", context=context)

парень в уроке допустил ошибку и исправил ее позже

Ответ принят как подходящий

Менеджером всех моделей (без явного) является .objects, а не .models, поскольку вы получаете не коллекцию моделей, а коллекцию объектов этих моделей.

Более того, .all() [Django-doc] — это метод, а не свойство менеджера, и фактически здесь он не нужен.

Наконец, вы забыли передать контекст движку рендеринга шаблона, поэтому:

Таким образом, мы можем работать с:

def task_view(request):
    task = Task.objects.filter(user=request.user)
    return render(request, 'task_view.html', {'task': task})

Другие вопросы по теме