Reputation: 3
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
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