Устанавливать вычисляемое свойство модели только один раз

я использую python3 + django, и у меня есть

  • модель пользователя с небольшим количеством полей
  • страница администратора, на которой представлены все пользователи
  • страница формы, где представлен один пользователь и может быть обновлен
  • внешний API с 2 конечными точками:
    1. GET /api/users/name (получить все имена для всех пользователей)
    2. GET /api/users/:id/name (получить имя пользователя по id)

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

как я могу добавить это "вычисляемое" свойство, не вызывая api больше, чем нужно?

это нормальная функция, вы должны создать новый метод в ModelAdmin и вы можете использовать результат этого метода в рендере. подробнее здесь: https://docs.djangoproject.com/en/4.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.readonly_fields

если вы хотите получать имя пользователя как readonly в списке и в форме, добавьте этот метод в list_display и в field или fieldsets Modeladmin options.

Вам не нужно использовать другие api, если у вас уже есть список пользователей.

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