Django админка - изменить отображаемые данные

Модель:

class Access(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    ...

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    full_name = models.CharField(max_length=300, blank=True)

В админке Django в таблице Access столбец user - отображает username пользователя. Вопрос в том, можно ли изменить значения в этом столбце, например взять данные из другой, связанной с таблицей User, таблицы (из таблицы Profile - данные из full_name)?

Нашел решение, может кому то будет полезно. Вносим изменения в admin.py

admin.py

from django.contrib import admin
from .models import Access

class AccessAdmin(admin.ModelAdmin):
    list_display = ['user_full_name', ...]  # указываем имя метода вместо 'user'

    def user_full_name(self, obj):
        # получаем full_name из связанного профиля
        return obj.user.profile.full_name if hasattr(obj.user, 'profile') else obj.user.username
    user_full_name.short_description = 'ФИО пользователя'  # название столбца в админке

admin.site.register(Access, AccessAdmin)
Вернуться на верх