Django Admin。在日期之后禁用`list_editable`字段进行编辑?

时间:2018-03-12 14:02:55

标签: python django django-admin

  

Django 2.0.3,Python 3.6.1

我有标准的Django管理面板。对于我的某个模型,我使用一些字段创建list_editable(截屏时为providerprovider_price)。问题是:如何在某个日期之后停用这些list_editable字段进行修改?

例如,如果现在是March 11, 2018及更早版本,则字段providerprovider_price将被禁用,并且不会在列表视图中进行编辑(仅在单个记录更改视图中)。

enter image description here

1 个答案:

答案 0 :(得分:3)

您可以使用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