У объекта типа 'Книга' нет атрибута 'объекты'

Я получаю ошибку AttributeError: type object 'Book' has no attribute 'objects' при запуске моего проекта django.

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):
      # Getting Value of title
      title = request.POST.get('title')

      """Creating Book Instance. """
      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

Как @DavidSchultz также указано в вышеприведенном комментарии как:

вероятно потому, что вы пишете object = bookmanager(), вместо objects = bookmanager(), в вашем определении модели.

По умолчанию менеджер objects, если вы не переопределите.

Вы можете сделать две вещи, одна - использовать, object в качестве менеджера, поэтому вы должны запросить, используя:

Book.object.all()

Но рекомендуется использовать объекты, так что вы можете просто изменить его имя на objects из object, а переопределение менеджера тогда запросить просто через:

Book.objects.all()

Это безумие происходит, когда имя model короткое, например, я назвал свой model Board, когда я пытаюсь использовать его, используя:

App.views.py:

boards = Board.objects.all()

error type object 'Board' has no attributes 'objects'

Но после того, как я переименовал модель из Board в SchoolBoard, она работает нормально.

class SchoolBoard(models.model):
    name = models.CharField(max_length=20)

Вы можете использовать его вместе с objects в views.py файле:

def board(request):
    boards = SchoolBoard.objects.all()
Вернуться на верх