Django admin list_display не является callable

class branch(models.Model):
    name = models.CharField(max_length=10, unique=True)

class company_group(models.Model):          
    branch = models.ForeignKey(branch, on_delete=CASCADE)     
    segment = models.ForeignKey(segment, on_delete=CASCADE)

class position_control(models.Model):    
    company_group = models.ForeignKey(company_group, on_delete=CASCADE) 
    position = models.ForeignKey(position, on_delete=CASCADE) 
    rank = models.SmallIntegerField()    
    valid = models.BooleanField(default=True)

class PositionControlAdmin(admin.ModelAdmin):
    list_display = ('company_group__branch', 'position', 'rank', 'valid')
    list_filter = ('company_group__branch',)

Получил ошибку <class 'information.admin.PositionControlAdmin'>: (admin.E108) Значение 'list_display[0]' ссылается на 'company_group__branch', который не является вызываемым объектом, атрибутом 'PositionControlAdmin', атрибутом или методом 'information.position_control'.

>

С фильтром list_filter company_group__branch работает нормально. Но получил ошибку в list_display. Как я могу это исправить?

Для отображения списка вы работаете с функцией, а не с цепочкой имен полей, разделенных подчеркиванием, так:

class PositionControlAdmin(admin.ModelAdmin):
    list_display = ('branch_name', 'position', 'rank', 'valid')
    list_filter = ('company_group__branch',)

    @admin.display(description='Branch name')
    def branch_name(self, object):
        return object.company_group.branch.name
Вернуться на верх