AttributeError: у объекта типа 'Task' нет атрибута 'models'
Говорит, что у моего объекта Task нет атрибутов-моделей, я попытался проверить, нет ли у меня где-нибудь плохого случая, но не думаю, что есть. views.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")
models.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://www.youtube.com/watch?v=Clf60pllEN8&t=490s
Я изменил task_view в файле views.py на следующее:
def task_view(request):
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})