Python 如何在Django 2.0中正确设置自动完成_字段?

Python 如何在Django 2.0中正确设置自动完成_字段?,python,django,Python,Django,正在尝试在Django admin中为ForeingKey设置自动完成_字段。我不明白如何正确地设置它。我阅读了文档,但是没有太多关于自动完成字段的信息,至少对我来说还不够 admin.py class AdminSettings(admin.ModelAdmin): filter_horizontal = ('english_word', 'russian_word', 'turkish_word') list_display = ['circassian_word', 'le

正在尝试在Django admin中为ForeingKey设置自动完成_字段。我不明白如何正确地设置它。我阅读了文档,但是没有太多关于自动完成字段的信息,至少对我来说还不够

admin.py

class AdminSettings(admin.ModelAdmin):
    filter_horizontal = ('english_word', 'russian_word', 'turkish_word')
    list_display = ['circassian_word', 'letter']
    autocomplete_fields = ('circassian_word',)
    search_fields = ['circassian_word__circassian']
class Word(models.Model):
    circassian_word = models.ForeignKey(Circassian, blank=True, null=True, on_delete=models.CASCADE, verbose_name='Адыгэбзэ')
    letter = models.ForeignKey(Alphabet, null=True, on_delete=models.CASCADE, verbose_name='Буква')
    audio = models.FileField(upload_to='audio', blank=True, verbose_name='Озвучка')
    turkish_word = models.ManyToManyField(Turkish, blank=True, verbose_name='Türkçe')
    english_word = models.ManyToManyField(English, blank=True, verbose_name='English')
    russian_word = models.ManyToManyField(Russian, blank=True, verbose_name='Русский')
型号.py

class AdminSettings(admin.ModelAdmin):
    filter_horizontal = ('english_word', 'russian_word', 'turkish_word')
    list_display = ['circassian_word', 'letter']
    autocomplete_fields = ('circassian_word',)
    search_fields = ['circassian_word__circassian']
class Word(models.Model):
    circassian_word = models.ForeignKey(Circassian, blank=True, null=True, on_delete=models.CASCADE, verbose_name='Адыгэбзэ')
    letter = models.ForeignKey(Alphabet, null=True, on_delete=models.CASCADE, verbose_name='Буква')
    audio = models.FileField(upload_to='audio', blank=True, verbose_name='Озвучка')
    turkish_word = models.ManyToManyField(Turkish, blank=True, verbose_name='Türkçe')
    english_word = models.ManyToManyField(English, blank=True, verbose_name='English')
    russian_word = models.ManyToManyField(Russian, blank=True, verbose_name='Русский')
错误消息

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x10d07b9d8>
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 120, in inner_run
    self.check(display_num_errors=True)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/management/base.py", line 410, in check
    raise SystemCheckError(msg)
django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues:

ERRORS:
<class 'psalale.admin.AdminSettings'>: (admin.E037) The value of 'autocomplete_fields[0]' refers to 'circassian_word__circassian', which is not an attribute of 'psalale.Word'.

System check identified 1 issue (0 silenced).
由启动的线程中未处理的异常 回溯(最近一次呼叫最后一次): 包装器中的文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/utils/autoreload.py”,第225行 fn(*args,**kwargs) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/management/commands/runserver.py”,第120行,在内部运行 self.check(display\u num\u errors=True) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/django/core/management/base.py”,第410行,选中 引发系统检查错误(msg) django.core.management.base.SystemCheckError:SystemCheckError:System check发现了一些问题: 错误: :(admin.E037)“autocomplete_fields[0]”的值指的是“circassian_word__circassian”,它不是“psalale.word”的属性。 系统检查发现1个问题(0个静音)。 正如在:

您必须在相关对象的
ModelAdmin
上定义
search\u字段,因为自动完成搜索使用它

所以你需要定义

class CircassianAdmin(admin.ModelAdmin):
    search_fields = []  # <- list of keys to search by
class CircassianAdmin(admin.ModelAdmin):
search_fields=[]。,如图中所示:

您必须在相关对象的
ModelAdmin
上定义
search\u字段,因为自动完成搜索使用它

所以你需要定义

class CircassianAdmin(admin.ModelAdmin):
    search_fields = []  # <- list of keys to search by
class CircassianAdmin(admin.ModelAdmin):

search_fields=[]。#你的意思是
管理站点.注册(CircassianADMIN)
?@Bootuz哦,是的,对不起。修正了。好的,我已经这样做了,但是得到了这个错误
TypeError:'MediaDefiningClass'对象是不可编辑的
我真的不知道如何设置这个。。。我尝试了
search\u字段
autocomplete\u字段
的所有组合。@Bootuz请你在
models.py
和相关
ModelAdmin
类中发布相关模型。你是说
admin.site.register(CircassianADMIN)
?@Bootuz哦,是的,对不起。修正了。好的,我已经这样做了,但是得到了这个错误
TypeError:'MediaDefiningClass'对象是不可编辑的
我真的不知道如何设置这个。。。我尝试了
search\u字段
autocomplete\u字段
..@Bootuz的所有组合,请您在
models.py
和相关
ModelAdmin
类中发布相关模型。