使用带有添加/编辑图标的文本框替换外键下拉列表 - Django

时间:2017-09-29 11:09:11

标签: django django-models django-forms django-admin django-admin-actions

与Django Admin中的外键字段相关,默认显示 element是一个包含所有外键的下拉列表框 相关模型中的项目。我的应用程序将包含数千个项目,我希望更改管理界面,并使用文本框而不是填充的下拉列表。

查找旁边有添加/编辑图标的文本框,这样我们就不会获得填充值,我们只是直接添加或编辑。

有没有办法实现它。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用自定义表单并在此表单字段上实现自定义窗口小部件。 (我用于这个desicion第三方库django_select2

from django import forms
from django_select2.forms import ModelSelect2Widget


class KeyWidget(ModelSelect2Widget):
    model = ModelToKey
    search_fields = ['field__icontains']

    def label_from_instance(self, obj):
        return u'{}'.format(obj.field)


class CustomForm(forms.ModelForm):

    class Meta:
        model = ModelWithKey
        fields = ('foreign_key_field')
        widgets = {
            'foreign_key_field': KeyWidget(attrs={'style': 'width:550px'}),
            }

此外,您还可以重载表单__init__以自定义对象的查询集,以便在此字段中进行选择。