【发布时间】:2021-11-30 15:34:11
【问题描述】:
我有一个与自身存在多对一关系的表,便于树形结构:
class Medium(models.Model):
label = models.CharField(max_length=30)
parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True)
def __str__(self):
return self.label
在 Django Admin 更改列表视图中,我想显示第二列,其中包含父媒体的上下文标签 - 我希望该列能够根据标签进行排序。但是,如果我使用list_display 添加字段“父”,则该列按主键排序。
演示:
@admin.register(Medium)
class MediumAdmin(admin.ModelAdmin):
list_display = ('label', 'parent', 'parent_id')
完成此任务的正确或最优雅的方法是什么?我已经看到建议通过向 MediumAdmin 添加一个返回父标签的自定义方法,然后将 @admin.display(ordering='parent__label') 装饰器应用到它,但我觉得我错过了更多正确的方法,因为这肯定是一种常见的需求。
【问题讨论】:
标签: python django django-admin