我有一个用例,其中有多个Ingredient
可以通过Django管理员链接到Recipe
。现在我大约有一百种配料,这使得在以下用户界面中选择配料非常困难。
有没有一种方法可以添加搜索字段或类似于django管理员的内容,以便于选择?
答案 0 :(得分:3)
您别无选择。
filter_horizontal
通过filter_horizontal,您可以在admin中使用水平m2m ui。我更喜欢在admin中使用m2m。
class YourAdmin(admin.ModelAdmin):
filter_horizontal = ('m2m_field',)
...
结果将是...
raw_id_fields
docs 您可以使用raw_id_fields
在m2m字段中使用弹出模式。
当您有很多m2m字段时,这很有用。另外,很容易过滤要添加的m2m obj。
class YourAdmin(admin.ModelAdmin):
raw_id_fiedls = ('m2m_field',)
...
答案 1 :(得分:1)
我想您想过滤成分并在管理界面上一一选择
您可以使用内置
CheckboxSelectMultiple
的django表单 小部件代替SelectMultiple
使选择变得容易
from django import forms
from django.contrib import admin
class RecipeForm(forms.ModelForm):
class Meta(object):
model = Recipe
widgets = {
'Ingredient': forms.CheckboxSelectMultiple,
}
class RecipeAdmin(admin.ModelAdmin):
form = RecipeForm
admin.site.register(Recipe, RecipeAdmin)
或者,您可以使用
django-better-filter-widget
软件包,如果您想在选项上进行搜索输入,请参考Github仓库 安装
这是一个自定义窗口小部件,它是通过覆盖SelectMultiple
django表格
from django import forms
from django.contrib import admin
from better_filter_widget import BetterFilterWidget
class RecipeForm(forms.ModelForm):
class Meta(object):
model = Recipe
widgets = {
'Ingredient': BetterFilterWidget(),
}
class RecipeAdmin(admin.ModelAdmin):
form = RecipeForm
admin.site.register(Recipe, RecipeAdmin)