Как получить последний логин пользователя с помощью поля OneToOneField и отобразить его на панели администратора?

Traceback (последний последний вызов): Файл "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", строка 864, in run self._target(*self._args, **self._kwargs) Файл "/Users/rustem/studypageback/venv/lib/python3.6/site-packages/django/utils/autoreload.py", строка 54, в wrapper fn(*args, **kwargs) Файл "/Users/rustem/studypageback/venv/lib/python3.6/site-packages/django/core/management/commands/runserver.py", строка 117, in inner_run self.check(display_num_errors=True) Файл "/Users/rustem/studypageback/venv/lib/python3.6/site-packages/django/core/management/base.py", строка 436, in check raise SystemCheckError(msg) django.core.management.base.SystemCheckError: SystemCheckError: Проверка системы выявила некоторые проблемы: ERRORS: <class 'portal_users.admin.ProfileAdmin'>: (admin.E108) Значение 'list_display[10]' ссылается на 'user__last_login', который не является вызываемой переменной, атрибутом 'ProfileAdmin', атрибутом или методом 'portal_users.Profile'. Проверка системы выявила 1 проблему (0 замалчивается).

Вот мой код

models.py:

class Profile(models.Model): user = models.OneToOneField( User, null=True, related_name='profile', on_delete=CUSTOM_SET_NULL, ) student_id = models.IntegerField( blank=True, null=True, verbose_name='ID студента/преподавателя', help_text='Из 1С', )

first_name = models.CharField(
    max_length=200,
    verbose_name='Имя',
    blank=True,
)
last_name = models.CharField(
    max_length=200,
    verbose_name='Фамилия',
    blank=True,
)

admin.py:

@admin.register(models.Profile) class ProfileAdmin(admin.ModelAdmin):

list_display = [
    'user',
    'first_name',
    'last_name',
    'user__last_login',
]

Вам нужно добавить пользовательский метод, который будет отображать последний вход в систему в админке:

class ProfileAdmin(admin.ModelAdmin):
    list_display = ['user','first_name', 'last_name', 'get_last_login']
    
    def get_last_login(self,instance):
        return instance.user.last_login
    get_last_login.short_description = "Last login"

Подробнее об этом: Документация по list_display

Вернуться на верх