list_editable和小部件

Jor*_*ter 12 django django-admin

使用list_editableModelAdmin,有没有办法更改用于可编辑字段的窗口小部件?我在文档中找不到任何内容.似乎这将是你能够自定义的东西.

DS.*_*DS. 18

覆盖get_changelist_form您的ModelAdmin类的方法,如下所示:

def get_changelist_form(self, request, **kwargs):
  kwargs.setdefault('form', MyAdminForm)
  return super(MyModelAdmin, self).get_changelist_form(request, **kwargs)
Run Code Online (Sandbox Code Playgroud)

并单独定义修改后的MyAdminForm:

class MyAdminForm(forms.ModelForm):
  class Meta:
     model = MyModel
  my_field = forms.DateField(widget=widgets.AdminDateWidget())
Run Code Online (Sandbox Code Playgroud)

这只是一个my_field仅由日期(没有时间)的小部件表示的示例.在列表视图中看起来好多了.


lec*_*hup 7

如果您只想更改小部件(已测试django 1.5)(您不需要设置标签等),请使用以下语法:

from django import forms

class OfferForm(forms.ModelForm):
    class Meta:
        model = Offer
        widgets = {
            'description' : forms.Textarea(
                attrs={
                    'cols': '20',
                }
            )
        }
Run Code Online (Sandbox Code Playgroud)

其中widgetsdict是dict,其键是字段的名称,值表示要覆盖的小部件.

作为django 1.5+的文档说明,它也可以:

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

没有任何super()kwargs杂耍.