Django 管理员。在日期之后禁用“list_editable”字段进行编辑?

Vic*_*tak 6 python django django-admin

Django 2.0.3,Python 3.6.1

我有标准的 Django 管理面板。对于我的模型之一,我创建list_editable了一些字段(providerprovider_price屏幕截图)。问题是:如何list_editable在某个日期后禁用这些字段进行编辑?

例如,如果现在是March 11, 2018和更旧,字段providerprovider_price被禁用并且不会在列表视图中编辑(仅在单个记录更改视图中)。

在此处输入图片说明

Pau*_*ida 6

您可以使用ModelAdmin.get_changelist_form. 像这样的东西:

class TouristVisaInvitationListForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        if should_be_disabled(self.instance.date): # whatever condition you want
            self.fields['provider'].disabled = True
            self.fields['provider_price'].disabled = True

class TouristVisaInvitationAdmin(admin.ModelAdmin):
    .
    .
    .
    def get_changelist_form(self, request, **kwargs):
        return TouristVisaInvitationListForm
Run Code Online (Sandbox Code Playgroud)