Объект 'function' не имеет атрибута 'objects' в django
я получаю ошибку:
AttributeError at /.
Объект 'function' не имеет атрибута 'objects'
Метод запроса: GET
URL запроса: http://127.0.0.1:8000/
Версия Django: 3.2.5
Тип исключения: AttributeError
Значение исключения:
Объект 'function' не имеет атрибута 'objects'
Exception Location: G:\PYTHON DJANGO 2021 - COMPLETE COURSE\first_django_project\devsearch\project\views.py, строка 27, in projects
Python Executable: C:\ProgramData\Anaconda3\envs\djangoenv\python.exe
Версия Python: 3.9.6
Python Path:
['G:\PYTHON DJANGO 2021 - COMPLETE COURSE\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'].
Время сервера: Sat, 21 Aug 2021 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})
попробуйте перенести базу данных
python manage.py makemigrations
python manage.py migrate
Вероятно, вы определили функцию в представлении с именем 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):
# …