【问题标题】:'function' object has no attribute 'objects' in django'function'对象在django中没有属性'objects'
【发布时间】:2021-10-22 16:10:54
【问题描述】:

我收到一个错误: 属性错误在 / “函数”对象没有属性“对象” 请求方法:GET 请求网址:http://127.0.0.1:8000/ Django 版本:3.2.5 异常类型:属性错误 异常值:
“函数”对象没有属性“对象” 异常位置:G:\PYTHON DJANGO 2021 - COMPLETE COURSE\first_django_project\devsearch\project\views.py,第 27 行,在项目中 Python 可执行文件:C:\ProgramData\Anaconda3\envs\djangoenv\python.exe Python版本:3.9.6 Python 路径:
['G:\PYTHON DJANGO 2021 - 完整课程\first_django_project\devsearch', 'C:\ProgramData\Anaconda3\envs\djangoenv\python39.zip', 'C:\ProgramData\Anaconda3\envs\djangoenv\DLLs', 'C:\ProgramData\Anaconda3\envs\djangoenv\lib', 'C:\ProgramData\Anaconda3\envs\djangoenv', 'C:\ProgramData\Anaconda3\envs\djangoenv\lib\site-packages'] 服务器时间:2021年8月21日星期六13:18:04 +0000

# models.py
from django.db import models
import uuid


# Create your models here.
class Project(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField(null=True,blank=True)
    demo_link = models.CharField(max_length=2000,null=True,blank=True)
    source_link = models.CharField(max_length=2000,null=True,blank=True)
    tag = models.ManyToManyField('Tag',blank=True)
    vote_total = models.IntegerField(default=0,null=True,blank=True)
    vote_ratio = models.IntegerField(default=0,null=True,blank=True)
    created_on = models.DateTimeField(auto_now_add=True)
    id = models.UUIDField(default=uuid.uuid4,unique=True,primary_key=True,editable=False)
    
    def __str__(self):
        return self.title


# views.py
from django.shortcuts import render
from .models import Project


# Create your views here.
def projects(requests):
    projects = Project.objects.all()
    return render(requests,"project/projects.html", {'projects':projects})

【问题讨论】:

  • 您是否在文件中定义了名称为Project 的视图?
  • 我建议您正确格式化您的问题,以便其他帮助您解决此问题。祝你好运。

标签: python-3.x django django-models django-views


【解决方案1】:

尝试迁移数据库

python manage.py makemigrations
python manage.py migrate

【讨论】:

    【解决方案2】:

    您可能在视图中定义了一个名为 Project 的函数,因此对 Project 模型的引用被更改为视图函数。

    你可以定义一个小写的视图函数名,所以project而不是Project,因此实现如下:

    from django.shortcuts import render
    from .models import Project
    
    # Create your views here.
    def projects(requests):
        projects = Project.objects.all()
        return render(requests, 'project/projects.html', {'projects':projects})
    
    # project instead of Project
    def project(request, pk):
        # …

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-22
      • 2020-11-13
      • 2013-01-27
      • 2017-07-07
      • 2021-01-12
      • 2016-12-08
      • 2018-05-07
      • 1970-01-01
      相关资源
      最近更新 更多