Скрыть поля редактирования / добавления / удаления в таблице администрирования Django, когда поле в list_display - PullRequest
2 голосов
/ 06 апреля 2020

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

enter image description here

Is можно ли этого добиться? Если да, то как?

Это мой код:

@admin.register(Request)
class RequestAdmin(admin.ModelAdmin):
    list_display = (
        "name",
        "contact_method",
        "neighborhood",
        "adults",
        "children",
        "prescriptions",
        "volunteer",
        "status",
        "due_date",
    )
    list_editable = ("status", "volunteer")

    def neighborhood(self, obj):
        if obj.address and obj.address.get("neighborhood", False):
            neighborhood = obj.address["neighborhood"]
            if obj.address.get("details", False):
                return f"{neighborhood} - {obj.address['details']}"
            return neighborhood

Кажется, проблема в том, что я также зарегистрировал другую модель Volunteer.

@admin.register(Volunteer)
class VolunteerAdmin(admin.ModelAdmin):
    list_display = ("name", "contact_method", "neighborhood", "valid_ID")

    def neighborhood(self, obj):
        if obj.address and obj.address.get("neighborhood", False):
            return obj.address["neighborhood"]

Однако мне нужно сохранить эту модель тоже. Итак, как мне этого добиться?

1 Ответ

1 голос
/ 06 апреля 2020

Мне удалось скрыть эти значки, используя пользовательские CSS для RequestAdmin, указав файл во внутреннем классе Media :

@admin.register(Request)
class RequestAdmin(admin.ModelAdmin):
    list_display = (
        "name",
        "contact_method",
        "neighborhood",
        "adults",
        "children",
        "prescriptions",
        "volunteer",
        "status",
        "due_date",
    )
    list_editable = ("status", "volunteer")

    def neighborhood(self, obj):
        if obj.address and obj.address.get("neighborhood", False):
            neighborhood = obj.address["neighborhood"]
            if obj.address.get("details", False):
                return f"{neighborhood} - {obj.address['details']}"
            return neighborhood

    # This is required to use custom extra CSS
    class Media:
        css = {"all": ("volunteering/css/style.css",)}

Содержимое volunteering/static/volunteering/css/style.css выглядит следующим образом:

.related-widget-wrapper-link {
    display: none;
}

Вот как структурировано приложение:

enter image description here

Так отображается таблица сейчас:

enter image description here

...