我在最简单的情况下使用注释 - 计算对象。
我希望能够按这些带注释的字段进行排序,也可以直接访问它们。
我的代码是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_count
时
clientgroup
作为示例ClientGroup,工作得很好。