在model.py和admin.py中设置聚合和注释的正确方法

时间:2017-03-04 23:39:25

标签: python django

我在最简单的情况下使用注释 - 计算对象。

我希望能够按这些带注释的字段进行排序,也可以直接访问它们。

我的代码是models.py

class ClientGroupManager(models.Manager):
    def get_queryset(self, *args, **kwargs):
        qs = super(clientGroupManager, self).get_queryset(
                *args, **kwargs
            )
        return qs.annotate(
            client_count=models.Count('clients')
        )

class ClientGroup(models.Model):
    objects = ClientGroupManager()
    name = models.CharField(max_length=128)
admin.py中的

class ClientGroupAdmin(admin.ModelAdmin):
    list_display = ('id', 'name', 'client_count')

    # def client_count(self, instance):
    #     return instance.client_count
    # client_count.admin_order_field = "client_count"

当它按原样运行时会在The value of 'list_display[3]' refers to 'client_count', which is not a callable

上中断

仅当我取消注释当前已注释的代码时,它才有效。

有更好的方法吗?评论部分似乎有点多余,特别是在clientgroup.client_countclientgroup作为示例ClientGroup,工作得很好。

0 个答案:

没有答案