Django: хочу использовать в админке list_display функцию свойства из моей модели

У меня есть модель (FeatureFilm), в которой я использую функцию "property" для получения конкретного человека (SUPERVISOR) из другой таблицы (StaffInternal), которая указывает на мою таблицу FeatureFilm с помощью ForeignKey.

В шаблоне я могу вызвать это свойство, и SUPERVISOR также будет показан мне в виде списка.

Теперь я хочу заполнить представление списка в панели администратора также этим столбцом SUPERVISOR. Теперь я не знаю, как вызвать функцию свойства.

вот мои две модели:

class StaffIntern(models.Model):
    HEAD_OF_POSTPRODUCTION = "HP"
    HEAD_OF_SALES = "HS"
    SUPERVISOR = "SV"


    STAFF_INTERN = [
        (HEAD_OF_POSTPRODUCTION, "Head of Postproduction"),
        (HEAD_OF_SALES, "Head of Sales"),
        (SUPERVISOR, "Postproduction Supervisor"),

    ]
    feature_id = models.ForeignKey(
        FeatureFilm,
        on_delete=models.CASCADE,
        null=True,
        blank=True,
    )
    tv_movie_id = models.ForeignKey(
        TvMovie, on_delete=models.CASCADE, null=True, blank=True
    )
    staff_role = models.CharField(
        choices=STAFF_INTERN,
        max_length=3,
        blank=True,
        help_text="Head of Postproduction, Head of Sales, Postproduction Supervisor, Technical Director, Colorist, "
        "Re-Recording Mixer, Online Editing, VFX Editing, DCP Mastering ",
        verbose_name="Stab Rolle",
    )
    staff_involved = models.ForeignKey(
        CustomUser,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        verbose_name="Beteiligte Person",
    )

class FeatureFilm(ProjectBaseModel):
    class Meta:
        verbose_name = "Kinofilm"
        verbose_name_plural = "Kinofilme"
        ordering = ["title"]

    @property
    def production_companies(self):
        return [
            company
            for company in self.companyinvolved_set.all()
            if company.company_role == company.PRODUCTION
            and company.is_production_list  # PR = Produktion
        ]

    @property
    def internal_supervisor(self):
        return [
            staff
            for staff in self.staffintern_set.all()
            if staff.staff_role == staff.SUPERVISOR
        ]

В шаблоне я обращаюсь к свойству следующим образом:

<tbody>

                {% for project in object_list %}


                    <tr>

                        <td><a href="{% url 'feature-detail-date' project.pk %}">{{ project.title }}</a></td>
                        <td>
                          {% for production in project.production_companies %}{{production.company_involved.name}}{% endfor %}

                        </td>
                        <td>{% if project.program_length_planned %}
                                {{ project.program_length_planned }}
                            {% endif %}
                        </td>
                        <td>{{ project.global_shooting_resolution }}</td>
                        <td>{{ project.global_resolution_theatrical }}</td>
                        <td>{% if project.hdr == 1%}
                                ja
                            {% else %}
                                nein
                            {% endif %}

                        </td>

                        <td>{% for supervisor in project.internal_supervisor %}{{supervisor.staff_involved.username}}{% endfor %}</td>
                        <td>{% if project.phase %}
                            {{ project.get_phase_display}}
                            {% endif %}

                        </td>


                    </tr>

                {% endfor %}

              </tbody>

Это все тоже прекрасно работает, теперь мне просто нужно как-то занести это в админку. Пока что мне это не удалось. Вот мой код, который приводит к ошибке:

@admin.register(FeatureFilm)
class FeatureFilmAdmin(admin.ModelAdmin):
    inlines = [
        SalesInfoSetInLine,
        ContentInfoSetInLine,
    ]

    list_display = [
        "title",
        "get_production_involved",
        "get_shootingtime",
        "program_length_planned",
        "global_shooting_resolution",
        "global_resolution_theatrical",
        "hdr",
        "get_supervisor",  
    ]

    def get_supervisor(self, obj):
        supervisor = FeatureFilm.objects.filter(pk=obj.id).values(
            "internal_supervisor__staff_involved__username"
        )
        return supervisor

    get_supervisor.short_description = "Projektbetreuer"
Вернуться на верх