Django中的自动填充字段

时间:2020-06-04 19:58:43

标签: python django django-models autocomplete django-admin

尝试在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中的User模型尝试了此代码,并且有效。

1 个答案:

答案 0 :(得分:0)

错误消息说:
您需要在流派管理员中定义“ search_fields”,因为您使用的是autocomplete_fields = ['genre']
并且不要忘记向其注册流派模型。

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

admin.site.register(Genre, GenreAdmin)