Django:在创建对象时搜索多对多字段
Django: Search many to many field while creating object
我有一个用例,我有多个 Ingredient
可以通过 Django 管理员链接到 Recipe
。现在我有大约一百种成分,这使得select以下UI中的成分变得非常困难UI。
有没有办法添加搜索字段或类似于 django admin 的东西以便更容易 selection?
你的选择不多。
1。 filter_horizontal
有了filter_horizontal,你可以在admin中使用水平m2m ui。我更喜欢这种在管理员中使用 m2m 的方式。
class YourAdmin(admin.ModelAdmin):
filter_horizontal = ('m2m_field',)
...
结果将是...
2。 raw_id_fields
docs
您可以使用 raw_id_fields
在您的 m2m 字段中使用弹出模式。
当你有很多 m2m 字段时,它有点用处。此外,过滤要添加的 m2m obj 也很容易。
class YourAdmin(admin.ModelAdmin):
raw_id_fiedls = ('m2m_field',)
...
我想你想过滤成分并 select 在管理员 UI
上一一过滤
You can use django forms builtin CheckboxSelectMultiple
widget in place of SelectMultiple
to make selection easy
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)
Alternatively, you can use django-better-filter-widget
package if you want a search input on choices, Refer Github repo for
installation
这是一个自定义小部件,通过覆盖 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)
我有一个用例,我有多个 Ingredient
可以通过 Django 管理员链接到 Recipe
。现在我有大约一百种成分,这使得select以下UI中的成分变得非常困难UI。
有没有办法添加搜索字段或类似于 django admin 的东西以便更容易 selection?
你的选择不多。
1。 filter_horizontal
有了filter_horizontal,你可以在admin中使用水平m2m ui。我更喜欢这种在管理员中使用 m2m 的方式。
class YourAdmin(admin.ModelAdmin):
filter_horizontal = ('m2m_field',)
...
结果将是...
2。 raw_id_fields
docs
您可以使用 raw_id_fields
在您的 m2m 字段中使用弹出模式。
当你有很多 m2m 字段时,它有点用处。此外,过滤要添加的 m2m obj 也很容易。
class YourAdmin(admin.ModelAdmin):
raw_id_fiedls = ('m2m_field',)
...
我想你想过滤成分并 select 在管理员 UI
上一一过滤You can use django forms builtin
CheckboxSelectMultiple
widget in place ofSelectMultiple
to make selection easy
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)
Alternatively, you can use
django-better-filter-widget
package if you want a search input on choices, Refer Github repo for installation
这是一个自定义小部件,通过覆盖 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)