Ali
Ali

Reputation: 3

autocomplete fields in Django

Trying to set up autocomplete_fields in django.

I have following model:

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)

Error Message:

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.

i try this code with User model from django.contrib.auth.models and it worked. i try this code with User model from django.contrib.auth.models and it worked.

Upvotes: 0

Views: 3311

Answers (1)

C.K.
C.K.

Reputation: 5538

As error msg said:
you need to define "search_fields" in Genre admin, since you use autocomplete_fields = ['genre'],
and don't forget to register Genre model with it.

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

admin.site.register(Genre, GenreAdmin)

Upvotes: 2

Related Questions