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)