You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Django项目时出现AttributeError: type object 'Book' has no attribute 'objects'错误

Django 报错:AttributeError: type object 'Book' has no attribute 'objects'

问题

运行Django项目时触发以下错误:

AttributeError: type object 'Book' has no attribute 'objects'

相关代码

Models.py

from django.db import models

# Create your models here.
"""Create or Save Model Instance. """
class BookManager(models.Manager):
  def create_book(self, title):
      book = self.create(title=title)
      return book

"""Book Model"""
class Book(models.Model):
  title = models.CharField(max_length=100, verbose_name="Book_Title")

  """Str Display. """
  def __str__(self):
      return self.title

  """To Save Model Instance. """
  object = BookManager()

views.py

from django.views import View
from .models import Book
from django.http import HttpResponse

# Create your views here.
"""Default View """
class default_view(View):
  def get(self, request):
     queryset=Book.objects.all()
     return HttpResponse(queryset)

  def post(self, request):
      # 获取title的值
      title = request.POST.get('title')

      """创建Book实例。 """
      book = Book(title=title)
      book.save()
      return HttpResponse('saved')

错误详情

Internal Server Error: /model_instance
Traceback (most recent call last):
  File "D:\Concept_and_Project\Web Development\BackEnd\Django Framework\Model\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
  File "D:\Concept_and_Project\Web Development\BackEnd\Django Framework\Model\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "D:\Concept_and_Project\Web Development\BackEnd\Django Framework\Model\lib\site-packages\django\views\generic\base.py", line 103, in view
    return self.dispatch(request, *args, **kwargs)
  File "D:\Concept_and_Project\Web Development\BackEnd\Django Framework\Model\lib\site-packages\django\views\generic\base.py", line 142, in dispatch
    return handler(request, *args, **kwargs)
  File "D:\Concept_and_Project\Web Development\BackEnd\Django Framework\Model\category\Model_Instance\Instance_method\views.py", line 9, in get
    queryset=Book.objects.all()
AttributeError: type object 'Book' has no attribute 'objects'
[04/Oct/2022 19:36:17] "GET /model_instance HTTP/1.1" 500 74725

解决方案

问题出在自定义模型管理器的变量名写错了:你在Book类里定义的是object = BookManager(),但Django默认的模型管理器属性名是复数的objects,视图里调用Book.objects.all()时自然找不到对应的属性。

修改Models.py中Book类的管理器定义,把单数的object改成复数的objects:

"""Book Model"""
class Book(models.Model):
  title = models.CharField(max_length=100, verbose_name="Book_Title")

  """Str Display. """
  def __str__(self):
      return self.title

  """To Save Model Instance. """
  objects = BookManager()  # 这里把object改成objects

修改后,Book.objects.all()可以正常查询数据,自定义的Book.objects.create_book()方法也能正常使用,同时直接创建实例保存的逻辑不受影响。

内容的提问来源于stack exchange,提问作者Stephen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:10:38