Django - сделать list_editable только для некоторых записей - PullRequest
0 голосов
/ 05 июня 2018

У меня есть модель Person , которую я хочу иметь в админ-панели.

Я создал PersonAdmin со следующим:

class PersonAdmin(admin.ModelAdmin):
    list_display = ["Name", "LastJob", "CurrentJob", "status"]
    list_editable = ["CurrentJob"]

    class Meta:
        model = Person

admin.site.register(Person, PersonAdmin)

status сообщает мне, если человек мертв или жив.

Я хочу, если статус мертв -> CurrentJob больше не редактируемый.

Есть ли у вас какие-либопредложения, как я могу это сделать?

Спасибо!

1 Ответ

0 голосов
/ 05 июня 2018

Администратор модели Django предоставляет для этого специальный метод: has_change_permission.В вашем случае это будет что-то вроде:

class PersonAdmin(admin.ModelAdmin):
    list_display = ["Name", "LastJob", "CurrentJob", "status"]
    list_editable = ["CurrentJob"]

    class Meta:
        model = Person

    def has_change_permission(request, obj=None):
        if obj:
            return obj.status != 'dead'

admin.site.register(Person, PersonAdmin)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...