【问题标题】:question about admin.py list_display关于 admin.py list_display 的问题
【发布时间】:2009-09-04 10:33:34
【问题描述】:
#admin.py
class GameListAdmin(admin.ModelAdmin):
    list_display = ['game', 'position']
    ordering = ('position',)

class GameAdmin(admin.ModelAdmin):
    list_display = ['name', 'status']
    actions = [make_published]

#models.py
class Game(models.Model):
    name = models.CharField(max_length=200)
    status = models.CharField(max_length=1, choices=STATUS_CHOICES)

    def __unicode__(self):
        return self.name

class GameList(models.Model):
    game = models.ForeignKey(Game)
    position = models.IntegerField()

    def __unicode__(self):
        return self.game.name

我正在尝试在 GameListAdmin 的 list_display 中显示 game.status 但没有 确定如何使用 Admin.py 中的 ForeignKey 进行向后查找

有什么想法吗?

【问题讨论】:

  • @Rob B - 我将你的代码移到内联,所以一旦 dpaste.com 自动删除你的 sn-p,这个问题就会变得有意义。

标签: django django-admin


【解决方案1】:

你可以这样做:

def get_status(obj):
    return '%s' % (obj.game.status)
get_status.short_description = 'Status'

class GameListAdmin(admin.ModelAdmin):
    list_display = ['game', 'position', get_status]

请参阅docs

【讨论】:

    【解决方案2】:

    您始终可以定义自己的列,就像文档解释的那样:http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display

    例如:

    class GameListAdmin(admin.ModelAdmin):
       list_display = ['game_status', 'position']
       ordering = ('position',)
    
       def game_status(self, obj):
           return obj.game.status
       game_status.short_description = 'Game status'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 2011-09-28
      • 2011-06-17
      • 2011-10-05
      • 2021-11-29
      • 2011-09-22
      • 2018-05-23
      相关资源
      最近更新 更多