Django 中的自动完成字段

autocomplete fields in Django

正在尝试在 Django 中设置 autocomplete_fields。

我有以下型号:

from django.db import models
 class Genre(models.Model):
   title = models.CharField(max_length=255)


class Movie(models.Model):
  title = models.CharField(max_length=255)
  year = models.IntegerField()
  time = models.CharField(max_length=255)
  director = models.CharField(max_length=255)
  genre = models.ManyToManyField(Genre)  
  image = models.ImageField(upload_to='images/')
  actors = models.TextField()
  summary = models.TextField()

admin.py:

from django.contrib import admin
from .models import Movie, Genre


class SettingAdmin(admin.ModelAdmin):
  search_fields = ['genre']


class MovieAdmin(admin.ModelAdmin):
  autocomplete_fields = ['genre']


admin.site.register(Movie, MovieAdmin)
admin.site.register(Genre)

错误信息:

Exception in thread django-main-thread:
Traceback (most recent call last):
File "c:\users\ali\appdata\local\programs\python\python38\lib\threading.py", line 932, in _ 
bootstrap_inner
self.run()
File "c:\users\ali\appdata\local\programs\python\python38\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\Ali\Desktop\cinemaEnv\lib\site-packages\django\utils\autoreload.py", line 53, in 
wrapper
fn(*args, **kwargs)
File "C:\Users\Ali\Desktop\cinemaEnv\lib\site-packages\django\core\management\commands\runserver.py", 
line 117, in inner_run
self.check(display_num_errors=True)
File "C:\Users\Ali\Desktop\cinemaEnv\lib\site-packages\django\core\management\base.py", line 441, in 
check
raise SystemCheckError(msg)
django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues:

ERRORS:
<class 'movies.admin.MovieAdmin'>: (admin.E040) ModelAdmin must define "search_fields", because it's 
 referenced by MovieAdmin.autocomplete_fields.

我用来自 django.contrib.auth.models 的用户模型尝试了这段代码,它成功了。 我用来自 django.contrib.auth.models 的用户模型尝试了这段代码,它成功了。

如错误消息所述:
您需要在 Genre 管理中定义 "search_fields",因为您使用 autocomplete_fields = ['genre']
并且不要忘记用它注册 Genre 模型。

class GenreAdmin(admin.ModelAdmin):
  search_fields = ['title']

admin.site.register(Genre, GenreAdmin)