首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第一次尝试使用Django (2.0)模型进行迁移时会导致AttributeError

第一次尝试使用Django (2.0)模型进行迁移时会导致AttributeError
EN

Stack Overflow用户
提问于 2018-01-14 03:43:06
回答 2查看 426关注 0票数 0

作为一个完全的初学者,我真的希望我在这里遗漏了一些明显的东西,希望有经验的人可以很容易地指出我的错误。

我正处于创建一些Django模型的第一步,并且不知道如何解决我在尝试进行迁移时遇到的错误。从我的研究来看,这个错误看起来很模糊。我不知道没有属性'model‘是什么意思。

下面是回溯:

代码语言:javascript
复制
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'

下面是模型代码:

代码语言:javascript
复制
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'

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2019-05-28 16:51:29

尝试逐个注册模型,如下所示:

代码语言:javascript
复制
admin.site.register(Author)
admin.site.register(Narrator)
admin.site.register(Book)
admin.site.register(Audiobook)
票数 1
EN

Stack Overflow用户

发布于 2018-01-14 05:40:28

通过示例,Django的文档非常容易理解。

您的admin.py必须与以下内容类似:

代码语言:javascript
复制
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)

你可以在这里查看基本的例子来理解tutorial part 7

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48243652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档