属性错误:类型对象“任务”没有属性“模型”

问题描述 投票:0回答:2

它说我的对象任务没有属性模型,我试图检查我是否有任何不好的情况,但我认为我没有。 视图.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

python django django-models django-views
2个回答
0
投票

我将views.py中的task_view更改为:

def task_view(请求):

current_user = request.user.id

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

return render(request, "task_view.html")

教程中的人犯了错误并在之后修复了它


0
投票

所有模型(没有显式)管理器拥有的管理器是

.objects
,而不是
.models
,因为您检索的不是模型的集合,而是这些模型的 objects

此外,

.all()
 [Django-doc]是一种方法,而不是管理器的属性,实际上这里没有必要。

最后,你忘记将上下文传递给模板的渲染引擎,所以:

因此我们可以与:

def task_view(request):
    task = Task.objects.filter(user=request.user)
    return render(request, 'task_view.html', {'task': task})
© www.soinside.com 2019 - 2024. All rights reserved.