Django 2.0.3,Python 3.6.1
我有标准的Django管理面板。对于我的某个模型,我使用一些字段创建list_editable
(截屏时为provider
和provider_price
)。问题是:如何在某个日期之后停用这些list_editable
字段进行修改?
例如,如果现在是March 11, 2018
及更早版本,则字段provider
和provider_price
将被禁用,并且不会在列表视图中进行编辑(仅在单个记录更改视图中)。
答案 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