Ale*_*.P. 4 python django django-admin
我有这样的模型:
class MyModel(models.Model):
user = models.ForeignKey(User)
field1 = models.CharField(max_length=100, db_index=True, null=False, blank=False)
field2 = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)
当然,它显示为如下列表:
user1 | field1 | field2
user1 | field1 | field2
user2 | field1 | field2
user2 | field1 | field2
Run Code Online (Sandbox Code Playgroud)
我想像这样展示它:
user1 | field1_count() | field2_count()
user2 | field1_count() | field2_count()
Run Code Online (Sandbox Code Playgroud)
我知道如何为用户计算 field1_count() 和 field2_count(),但是如何为每个用户只保留一行?
您可以使用list_display属性来定义在管理员的更改列表页面中显示哪些字段。
class MyAdmin(admin.ModelAdmin):
list_display = ('username', 'field1_count', 'field2_count')
def field1_count(self, obj):
# count field1
return c
def field2_count(self, obj):
# count field2
return c
admin.site.register(User, MyAdmin)
Run Code Online (Sandbox Code Playgroud)
请注意,这将在您的更改列表页面中的每行至少进行两次查询,这在您的情况下可能是也可能不是问题。
或者,您可以尝试覆盖ModelAdmin.queryset或ModelAdmin.changelist_view。
| 归档时间: |
|
| 查看次数: |
6426 次 |
| 最近记录: |