django modeladmin list_display

3

你如何定义/保存投票选项? - Bernhard Vallant
2个回答

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()

哈哈!我因为大小写问题遇到了麻烦。真奇怪。 - M.A.
这两种方法都可以。如果您在除了管理界面之外的地方没有使用选择计数,则可以在“ModelAdmin”上定义此选项;如果您需要在多个地方使用选择计数,则应该使用模型方式。 - Davor Lucic

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', )

这段代码返回(无),即使每个选项都有5个选择。 :( - M.A.
我在 pcount 方法中添加了缺失的 return 语句。你有注意到吗? - Manoj Govindan
@M.A.: 很奇怪。您可以在Django shell中查看任何Poll实例返回的pcount吗? - Manoj Govindan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接