用带有 add/edit 图标的文本框替换外键下拉列表 - Django

Replace foreign key dropdown with textbox with add/edit icon - Django

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

寻找旁边带有 add/edit 图标的文本框,这样我们就不会得到填充值,我们直接添加或编辑即可。

有什么办法可以实现吗

您可以尝试使用自定义Form,在这个表单域上实现自定义Widget。 (我为此使用第 3 方库 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__ 以自定义要在此字段中选择的对象查询集。

您要找的是raw_id_fields

class ArticleAdmin(admin.ModelAdmin):
    raw_id_fields = ("newspaper", )
  • 默认情况下,Django 的管理员使用 select-box 界面 (