django modeladmin 列表显示

3 投票
2 回答
1744 浏览
提问于 2025-04-16 03:24

我正在尝试学习Django的官方教程,特别是关于modeladmin的list_display部分:

http://docs.djangoproject.com/en/1.2/intro/tutorial02/#customize-the-admin-change-list

我该如何添加一列,显示每个投票的选项数量呢?

谢谢!

2 个回答

1

添加一个自定义的方法(比如叫做 pcount),这个方法可以返回某个 Poll 实例的选择数量。然后,你可以把这个方法添加到你的 ModelAdmin 子类中的 list_display 属性里。

class Poll(models.Model):
    ...
    def pcount(self):
        return self.choice_set.count()


class PollAdmin(admin.ModelAdmin):
    list_display = (<other fields>, 'pcount', )
3

你不需要修改你的模型。要在后台动态计算列,可以在ModelAdmin对象中创建一个函数,这个函数需要一个额外的参数,这个参数就是普通的Poll模型实例。然后写的代码就和在模型中写的一样,这里可以忽略self,因为它没有你想要的内容。

class PollAdmin(admin.ModelAdmin)
    list_display = (<other_fields>, 'choice_count')

    def choice_count(self, model_instance):
        return model_instance.choice_set.count()

撰写回答