我们如何在 django 管理搜索字段中搜索多对多字段

Posted

技术标签:

【中文标题】我们如何在 django 管理搜索字段中搜索多对多字段【英文标题】:how can we search many to many field in django admin search field 【发布时间】:2019-01-26 15:26:34 【问题描述】:

在这里,我在 Django 模型中定义了多对多字段,我想在我的 Django 管理搜索字段中搜索该多对多字段。由于我们不能在自定义 djangomodelAdmin 类的 'search_fields=[]' 中放置多对多字段。如果有人有解决方案,请提供一些建议。

【问题讨论】:

你是否只搜索多对多字段的特定属性。 【参考方案1】:

假设我们有两个模型ItemSubItem

class SubItem(Model):
    name = CharField(max_length=128)

class Item(Model):
    subitems = ManyToManyField(SubItem)

我们可以通过在search_fieldssearch_fields 中使用双下划线(__)来搜索相关SubItem 对象的名称

class ItemAdmin(admin.ModelAdmin):
    search_fields = ['subitems__name']

如果有人因此输入查询,则搜索将在SubItems 的名称上进行,并且将返回包含此类子项的Items。

【讨论】:

以上是关于我们如何在 django 管理搜索字段中搜索多对多字段的主要内容,如果未能解决你的问题,请参考以下文章

Django admin - 如何在自定义管理表单中为多对多字段添加绿色加号

在 django 中查询多对多字段会产生一个空查询集

如何在 Django 中向多对多关系中添加字段?

多对多字段的 Django 1.2.1 内联管理

Django 管理员多对多字段

在 django admin 中使用 related_name 配置多对多字段