Django正在尝试从ModelAdmin中的列表显示调用模型函数

2024-04-23 12:26:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我跟随Mozilla的Django教程,目前在this页上

我试图让ModelAdmin模型的Book调用ModelAdminlist_displayBook模型的函数。这是为了在列表显示中提供类型列表

我在admin.py文件中有以下代码:

class BookAdmin(admin.ModelAdmin):
    list_display('title', 'author', 'display_genre')

models.py文件中:

class Book(models.Model):
    # ...
    def display_genre(self):
        return ', '.join(genre.name for genre in self.genre.all()[:3])
    display_genre.short_description = 'Genre'

我相信这正是教程要求我添加到每个文件中的内容

以下是django在我尝试调用python manage.py makemigrations时告诉我的:

SystemCheckError: System check identified some issues:

ERRORS:
<class 'catalog.admin.BookAdmin'>: (admin.E108) The value of 'list_display[2]' refers to 'display_genre', which is not a callable, an attribute of 'BookAdmin', or an attribute or method on 'catalog.Book'.

我不确定我做错了什么


Tags: 文件py模型self列表adminmodelsdisplay
1条回答
网友
1楼 · 发布于 2024-04-23 12:26:08

对于任何读到这篇文章的人,我已经让它工作了。以下是方法:

  1. 注释掉admin.py

  2. 运行makemigrationsmigrate

  3. 取消对admin.py

  4. 运行makemigrationsmigrate

现在没有得到错误

也许问题是django在数据库根据models.py更新之前正在查看admin.py文件,因此display_genre函数还不存在

相关问题 更多 >