管理员中的Django“本地风味”选择小部件

时间:2011-10-22 04:04:00

标签: django django-models django-admin

我想在管理员中使用in_.forms.INStateSelect

我应该在模型中添加哪些文件?如何让它在管理员中显示一个小部件?

修改

我正在尝试

from django.contrib.localflavor.in_.forms import INStateSelect
state = INStateSelect()

谢谢!

1 个答案:

答案 0 :(得分:1)

你在哪里尝试这段代码?小部件需要附加到字段...

这是你可以做到的一种方式:

class MyAdmin(admin.ModelAdmin):
    def formfield_for_dbfield(self, db_field, **kwargs):
        if db_field.name == 'my_state_field':
            kwargs['widget'] = INStateSelect()
        return super(MyAdmin, self).formfield_for_dbfield(db_field, **kwargs)

另一种方法是覆盖管理表单并使用INStateField

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['myfield'] = INStateField()


class MyAdmin(admin.ModelAdmin):
    form = MyForm