0

django のモデルに HistoricalRecords を追加しました。

history_list_display属性を使用して、管理パネルの履歴ページに列を表示できました。

employeeこれらの列には、history_list_display属性タプルを使用して表示できる従業員がいます。employee__person__person_nameしかし、他のテーブルを使用してForeignKey参照を行おうとすると、表示されNoneます。

django adminの履歴ページにForeignKey参照値を表示するにはどうすればよいですか?

4

1 に答える 1

0

がオブジェクトの履歴バージョンを保存するときdjango-simple-history、外部キーの外部キー制約をすべて削除します (これは、履歴レコードが指しているオブジェクトを削除しても、履歴レコードが影響を受けないようにするためです)。外部キーを処理する方法django-simple-historyを実行すると、django admin で通常実行できる二重アンダースコア クエリのタイプを実行できなくなります。代わりに、以下に示すように、オブジェクトを自分でクエリできます。

@register(Employee)
class EmployeeAdmin(SimpleHistoryAdmin):
    list_display = [...]
    history_list_display = ["get_employee_name", "get_employee_manager_name"]

    def get_employee_name(self, obj):
        obj.person.name

    def get_employee_manager_name(self, obj):
        return Employee.objects.filter(pk=obj.employee.id).first().manager.person.person_name
于 2020-06-19T15:22:28.790 に答える