Django:在创建对象时搜索多个到多个字段

问题描述 投票:3回答:2

我有一个用例,我有多个Ingredient,可以通过Django管理员链接到Recipe。现在我有大约一百种成分,这使得在以下UI中选择成分非常困难。

enter image description here

有没有办法添加搜索字段或类似于django管理员的东西,以方便选择?

django python-3.x django-models django-admin django-2.0
2个回答
3
投票

你几乎没有选择。

1. filter_horizontal

使用filter_horizo​​ntal,您可以在admin中使用水平m2m ui。我更喜欢这种方式在管理员中使用m2m。

class YourAdmin(admin.ModelAdmin):
    filter_horizontal = ('m2m_field',)
    ...

结果将是......

enter image description here

2. raw_id_fields docs

您可以使用raw_id_fields在您的m2m字段中使用弹出模式。

当你有很多m2m字段时,它有点用处。此外,过滤哪个m2m obj很容易。

class YourAdmin(admin.ModelAdmin):
    raw_id_fiedls = ('m2m_field',)
    ...

1
投票

我想你想过滤成分并在管理界面上逐一选择它

您可以使用qazxsw poi小部件中的django表单代替qazxsw poi来轻松选择

CheckboxSelectMultiple

或者,如果您想要选择搜索输入,可以使用SelectMultiple包,请参阅Github repo进行安装

它是一个自定义小部件,通过覆盖django表单的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
© www.soinside.com 2019 - 2024. All rights reserved.