Django - 仅为某些条目设置list_editable

时间:2018-06-05 09:13:41

标签: python django django-admin

我有一个模型 Person ,我想在管理面板中找到它。

我使用以下内容创建了 PersonAdmin

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

    class Meta:
        model = Person

admin.site.register(Person, PersonAdmin)

状态告诉我这个人是死了还是活着。

我希望如果状态已经死亡 - > CurrentJob不再可编辑。

您有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

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)