为什么我的id不会出现在django管理列表中?

时间:2010-06-18 16:29:28

标签: django django-admin

我有一个类Task(models.Model),我没有明确定义id字段(因为它自动为你定义)。我检查了数据库,它存在于任务中。现在我想通过admin.ModelAdmin中的list_display属性将其显示在列表中。我有很多东西,只有id没有出现在我的任何行中。其他一切都很好。任何人都知道我需要做什么特别的事情来显示id?

编辑: 如果我定义一个函数如下:

def ID(self, obj):
        return obj.id

我把这个函数放在list_display中,它会因某种原因显示id。

非常感谢!

杰森

2 个答案:

答案 0 :(得分:4)

默认情况下不显示。您需要为该模型创建自定义Admin类,然后将“id”添加到list_display值。例如。在/ admin.py:

class TaskAdmin(admin.ModelAdmin):
    list_display = ['id', 'name', etc. etc] 

admin.site.register(Task, TaskAdmin)

有关详细信息,请参阅the docs

答案 1 :(得分:1)

我相信您还在admin.ModelAdmin中使用了list_editable。这会导致ID被隐藏,并且是一个已知错误:http://code.djangoproject.com/ticket/12475

解决方法是陈述list_display_links选项:

class AdAdmin(admin.ModelAdmin):
    list_display = ['id', 'ad_title', 'status', 'sponsor' ... ]
    list_display_links = ['id', 'ad_title'] # forcing to display id of model
    list_editable = ['status']
    ...

谢谢,希望这会有所帮助。