一尘不染

Django Admin:仅将一个自定义窗口小部件用于一个模型字段

django

我的模型中有一个DateTimeField字段。我想将其显示为Django管理站点中的复选框小部件。为此,我创建了一个自定义表单小部件。但是,我不知道如何仅将我的自定义窗口小部件用于这一字段。

在Django文档解释了如何使用自定义窗口小部件的所有特定类型的字段:

class StopAdmin(admin.ModelAdmin):
    formfield_overrides = {
        models.DateTimeField: {'widget': ApproveStopWidget }
    }

但是,这还不够精细。我只想更改一个字段。


阅读 400

收藏
2020-04-02

共1个答案

一尘不染

为你的ModelAdmin创建一个自定义ModelForm并将“ widgets”添加到其Meta类,如下所示:

class StopAdminForm(forms.ModelForm):
  class Meta:
    model = Stop
    widgets = {
      'approve_ts': ApproveStopWidget(),
    }
    fields = '__all__'

class StopAdmin(admin.ModelAdmin):
  form = StopAdminForm

做完了!

2020-04-02