【问题标题】:why isn't my id showing up in django admin list?为什么我的 id 没有出现在 django 管理列表中?
【发布时间】:2011-03-05 12:38:21
【问题描述】:

我有一个类 Task(models.Model),我没有明确定义 id 字段(因为它会自动为您定义)。我检查了数据库,它存在于任务中。现在我想通过 admin.ModelAdmin 中的 list_display 属性在列表中显示它。我有一堆东西,只有 id 没有出现在我拥有的任何行中。其他一切正常。有谁知道我必须做些什么才能让 id 显示?

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

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

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

非常感谢!

杰森

【问题讨论】:

    标签: django django-admin


    【解决方案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']
        ...
    

    谢谢,希望对您有所帮助。

    【讨论】:

      【解决方案2】:

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

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

      更多详情请见the docs

      【讨论】:

      • 嗨,彼得,非常感谢您的回复!但是,我确实将它放在 list_display 中,但它没有显示出来。但是,如果我根据函数定义输入“ID”,它就会显示出来。我不确定是什么问题。
      • 嗯...我需要查看 models.Model 类和 admin.ModelAdmin 类的代码才能为您提供更多帮助。请记住,大小写 在这里很重要,因此这可能是一个促成因素。
      猜你喜欢
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      相关资源
      最近更新 更多