Невозможно отобразить несколько полей, доступных для чтения, в админке Django, отображается только одно поле

Я пытаюсь отобразить две новые строки (поля) в разделе "posts" в django admin, которые являются полями только для чтения, которые берут данные из двух других столбцов базы данных. Мой код работает, но он не создает два новых поля, а отображает только одно.

Я относительно новичок в Django и python, и я изо всех сил пытаюсь понять, как это сделать. Я потратил слишком много времени, пробуя разные вещи, но безрезультатно.

В контексте моего теста я хочу видеть два поля с доступом для чтения под названием "New row 1" и "New row 2", которые берут данные из двух столбцов базы данных под названием "est_completion_time" и "downtime". На выходе я могу увидеть только "Новая строка 2".

enter image description here

Вот мой код в файле admin.py:

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):

    form = JBForm

    exclude = ['est_completion_time'] # hide this database column
    exclude = ['downtime'] # hide this database column

    readonly_fields = ['placeholder_1'] # display this one
    readonly_fields = ['placeholder_2'] # display this one

    @admin.display(description="New row 1")
    def placeholder_1(self, obj):
       
        return obj.est_completion_time # a new readonly field which should display contents of 'est_completion_time' column

    @admin.display(description='New row 2')
    def placeholder_2(self, obj):

        return obj.downtime # a new readonly field which should display contents of 'downtime' column

После прочтения документации я не смог найти решение:

https://docs.djangoproject.com/en/4.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.fieldsets

https://docs.djangoproject.com/en/4.0/ref/contrib/admin/actions/

Любая помощь будет очень признательна.

Я считаю, что вам нужно указать excluded и readonly_fields один раз.

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):

    form = JBForm

    exclude = ["est_completion_time", "downtime"]

    readonly_fields = ["placeholder_1", "placeholder_2"] # display these two

    @admin.display(description="New row 1")
    def placeholder_1(self, obj):
        return obj.est_completion_time 

    @admin.display(description="New row 2")
    def placeholder_2(self, obj):
        return obj.downtime 

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