【发布时间】:2021-12-07 09:12:06
【问题描述】:
这是我的模型:
class Academic(models.Model):
SCHOOL_COLLEGE_SERVICE = [
('School Of Humanities', 'School Of Humanities'),
('School Of Culture & Creative Arts', 'School Of Culture & Creative Arts'),
('School Of Modern Languages & Cultures', 'School Of Modern Languages & Cultures'),
('School Of Critical Studies', 'School Of Critical Studies'),
('Arts College Of Arts Administration', 'Arts College Of Arts Administration'),
]
school = models.CharField(choices=SCHOOL_COLLEGE_SERVICE, max_length=50, blank=True, null=True)
我想在我的 Django 管理界面中有一个不错的自动完成/过滤器。不幸的是,如果数据集不是来自 ManyToMany 或 ForeignKey 关系,似乎不可能有自动完成功能。这是我尝试过的:
from django.contrib import admin
from .models import Academic, Partner, Project
from admin_auto_filters.filters import AutocompleteFilter
import django_filters
@admin.register(Academic)
class AcademicAdmin(admin.ModelAdmin):
search_fields = ['surname', 'forename']
#school = django_filters.ChoiceFilter(choices=Academic.SCHOOL_COLLEGE_SERVICE)
#autocomplete_fields = ['school']
我知道我也可以像这样设置查询集:
class SchoolFilter(django_filters.FilterSet):
class Meta:
model = Academic
fields = ['school',]
但是 Django 还是抱怨The value of 'autocomplete_fields[0]' must be a foreign key or a many-to-many field. 怎样才能实现我想要的呢?
【问题讨论】:
-
您的实际模型/数据中是否有超过 5 所学校?
-
这是选择之一。在这种特定情况下,我只有 5 个,在其他模型中,我什至有 20 或 30 个选择。
标签: python django django-admin django-filters django-admin-filters