用带有 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 界面 (
raw_id_fields
是您要更改为
Input 用于 ForeignKey 或 ManyToManyField: 的小部件
注意:如果字段是 ,raw_id_fields 输入 小部件应包含主键如果字段是 ManyToManyField,则 ForeignKey 或 逗号分隔值列表 。 raw_id_fields 小部件在字段旁边显示一个放大镜按钮,允许用户搜索和 select 一个值:
您可以阅读文档 here
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 界面 (
raw_id_fields
是您要更改为 Input 用于 ForeignKey 或 ManyToManyField: 的小部件
注意:如果字段是 ,raw_id_fields 输入 小部件应包含主键如果字段是 ManyToManyField,则 ForeignKey 或 逗号分隔值列表 。 raw_id_fields 小部件在字段旁边显示一个放大镜按钮,允许用户搜索和 select 一个值:
您可以阅读文档 here