Вопрос:

Первая попытка моделей Django (2.0), приводящая к AttributeError при выполнении миграций

python django class oop django-2.0

181 просмотра

2 ответа

1 Репутация автора

Как начинающий, я действительно надеюсь, что мне не хватает чего-то очевидного здесь, и что кто-то с опытом может легко указать на мою ошибку.

Я нахожусь на первых этапах создания некоторых моделей Django и не могу понять, как устранить ошибку, возникающую при попытке выполнить миграцию. Судя по моим исследованиям, эта ошибка выглядит расплывчато. Я понятия не имею, что это значит, говоря, что нет атрибута «модель».

Вот обратная связь:

Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\core\management\__init__.py", line 371, in execute_from_command_line
utility.execute()
File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\core\management\__init__.py", line 365, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\core\management\base.py", line 288, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\core\management\base.py", line 332, in execute
self.check()
File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\core\management\base.py", line 364, in check
include_deployment_checks=include_deployment_checks,
File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\core\management\base.py", line 351, in _run_checks
return checks.run_checks(**kwargs)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\core\checks\registry.py", line 73, in run_checks
new_errors = check(app_configs=app_configs)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\contrib\admin\checks.py", line 22, in check_admin_app
errors.extend(site.check(app_configs))
File "C:\Program Files (x86)\Python36-32\lib\site-packages\django\contrib\admin\sites.py", line 79, in check
if modeladmin.model._meta.app_config in app_configs:
AttributeError: 'Book' object has no attribute 'model'

И вот код модели:

class Author(models.Model):
    name = models.CharField(max_length=80, blank=False, null=False, unique=True)

class Book(models.Model):
    title = models.CharField(max_length=150)
    description = models.TextField(blank=True, null=True)
    series = models.CharField(max_length=150, blank=True, null=True)
    authors = models.ManyToManyField(Author, blank=True)
    finished = models.BooleanField(default=False, verbose_name="Finished")
    # image = models.ImageField()

    def list_authors(self):
        return ", ".join([author.name for author in self.authors.all()])

class Narrator(models.Model):
    narrator = models.CharField(max_length=80)

class Audiobook(Book):
    length = models.TimeField(blank=False, null=False)
    narrator = models.ForeignKey(Narrator, on_delete=models.SET_NULL, blank=False, null=True)

Я прошел несколько уроков и прочитал любую документацию по Django, которая, на мой взгляд, была бы уместна, но я все еще что-то упускаю. Любые идеи или общие указания будут с благодарностью.

РЕДАКТИРОВАТЬ: Добавление моего admin.py. Я все это закомментировал, и миграция работала нормально, но я все еще нахожу ту же ошибку при попытке запустить другую миграцию и похожую ошибку, но вместо того, чтобы сказать, что нет атрибута 'models', он говорит, что нет атрибута'urls'

from django.contrib import admin
from .models import (Author, Book, Narrator, Audiobook)

# Register your models here.

admin.site.register(Author, Book)
admin.site.register(Narrator, Audiobook)
Автор: Derrick Источник Размещён: 13.01.2018 07:43

Ответы (2)


0 плюса

1320 Репутация автора

Документация по Django довольно проста для понимания на примерах.

Ваш admin.py должен быть похож на это:

from django.contrib import admin
from .models import Author, Book, Narrator, Audiobook
class AuthorAdmin(admin.ModelAdmin):
   fields = ['name']
class BookAdmin(admin.ModelAdmin):
   fields = ['title', 'description', ]

# Register your models here.

admin.site.register(Author, Book)
admin.site.register(Narrator, Audiobook)

Вы можете проверить базовый пример здесь, чтобы понять учебную часть 7 .

Автор: ytsejam Размещён: 13.01.2018 09:40

0 плюса

1 Репутация автора

Попробуйте зарегистрировать модели по очереди, как показано ниже:

admin.site.register(Author)
admin.site.register(Narrator)
admin.site.register(Book)
admin.site.register(Audiobook)
Автор: big pop Размещён: 28.05.2019 08:51
Вопросы из категории :
32x32